qazwsx123
qazwsx123

Reputation: 247

Merging multiple rows into one in dataframe

I have a dataframe which looks like:

df = 

 |Name     Nationality            Family   etc.....
0|John     Born in Spain.         Wife
1|nan      But live in England    son
2|nan      nan                    daughter

Some columns only have one row but others have multiple answers over a few rows, how could i merge the rows onto each other so it would look something like the below:

df = 

 |Name          Nationality                             Family              etc....
0|John          Born in Spain. But live in England      Wife Son Daughter

Upvotes: 0

Views: 54

Answers (1)

akensert
akensert

Reputation: 304

Perhaps this will do it for you:

import pandas as pd

# your dataframe
df = pd.DataFrame(
    {'Name':        ['John', np.nan, np.nan],
     'Nationality': ['Born in Spain.', 'But live in England', np.nan],
     'Family':      ['Wife', 'son', 'daughter']})

def squeeze_df(df):
    new_df = {}
    for col in df.columns:
        new_df[col] = [df[col].str.cat(sep=' ')]
    return pd.DataFrame(new_df)

squeeze_df(df)

# >> out: 
#   Name    Nationality                          Family
# 0 John    Born in Spain. But live in England   Wife son daughter

I made the assumption that you only need to do this for one single person (i.e. squeezing/joining the rows of the dataframe into a single row). Also, what does "etc...." mean? For example, will you have integer or floating point values in the dataframe?

Upvotes: 1

Related Questions