如何将数据框行合并为单个行,并为每一列浓缩所有行值?

时间:2020-08-14 09:28:04

标签: python pandas merge row

我有一个df,例如:

  | col1  | col2   | col3
0 | Text1 | a,b ,c | klra-tk³,t54 ? 
1 | Text2 | NaN    | gimbal3, gimbal4
2 | Text3 | a,k,m  | NaN

我想获得一行,其中一行的所有唯一值都在一行中,而NaN则被忽略,例如:

  | col1                | col2      | col3
0 | Text1, Text2, Text3 | a,b,c,k,m | klra-tk³,t54,gimbal3, gimbal4

我该如何用熊猫呢?

1 个答案:

答案 0 :(得分:2)

Series.str.splitDataFrame.stack使用自定义函数,通过Series.drop_duplicates删除重复项,通过Series.dropna删除缺失值,通过,进行最后加入并转换{{ 1}}通过Series.to_frame移到一行DataFrame并转置:

Series

或使用列表理解,如:

f = lambda x: ','.join(x.str.split(',', expand=True).stack().drop_duplicates().dropna())
df = df.apply(f).to_frame().T
print (df)
                col1       col2                         col3
0  Text1,Text2,Text3  a,b,c,k,m  klra-tk,t54,gimbal3,gimbal4