我有一个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
我该如何用熊猫呢?
答案 0 :(得分:2)
对Series.str.split
,DataFrame.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