简体   繁体   中英

How can I get combined result of a column values in a DataFrame?

I have below data in a DataFrame.

city    age                     
mumbai  12 33 5 55
delhi   24 56 78 23 43 55 67
kal     12 43 55 78 34
 mumbai     14 56 78 99     # Have a leading space 
MUMbai  34 59               # Have Capitol letters  
kal     11

I want to convert it into below format :

city    age
mumbai  12 33 5 55 14 56 78 99 34 59
delhi   24 56 78 23 43 55 67
kal     12 43 55 78 34 11

How can I achieve this?

Note: I have edited the data, now some city name are in Capital letter and some has leading spaces. How can we apply strip() and lower() functions to it?

  • We use groupby with sort=False to ensure we present cities in the same order they first appear.
  • We use ' '.join to concatenate the strings together.
  • Lastly, we reset_index to get the city values that have been placed in the index into the dataframe proper.

df.groupby('city', sort=False).age.apply(' '.join).reset_index()

     city                           age
0  mumbai  12 33 5 55 14 56 78 99 34 59
1   delhi          24 56 78 23 43 55 67
2     kal             12 43 55 78 34 11

Response to Edit

df.age.str.strip().groupby(
    df.city.str.strip().str.lower(),
    sort=False
).apply(' '.join).reset_index()

     city                           age
0  mumbai  12 33 5 55 14 56 78 99 34 59
1   delhi          24 56 78 23 43 55 67
2     kal             12 43 55 78 34 11

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM