我在熊猫中有以下数据框
tank nozzle
1 1
1 1
1 2
1 3
1 1
2 2
2 1
2 1
2 2
2 2
2 1
2 3
2 2
我要关注输出
tank nozzle
1 1,2,3
2 1,2,3
喷嘴应该是唯一的编号。 如何在熊猫中做到这一点?
答案 0 :(得分:3)
将列nozzle
转换为字符串drop_duplicates
并将GroupBy.apply
与join
一起使用:
df['nozzle'] = df['nozzle'].astype(str)
df1 = df.drop_duplicates().groupby('tank')['nozzle'].apply(','.join).reset_index()
print (df1)
tank nozzle
0 1 1,2,3
1 2 2,1,3
具有lambda函数的替代解决方案:
df1 = (df.drop_duplicates()
.groupby('tank')['nozzle']
.apply(lambda x: ','.join(x.astype(str)))
.reset_index())
对于列表:
df1 = df.drop_duplicates().groupby('tank')['nozzle'].apply(list).reset_index()
print (df)
tank nozzle
0 1 [1, 2, 3]
1 2 [2, 1, 3]