如何使用逗号分隔的值删除重复项并dcast pandas dataframe

时间:2018-10-18 07:16:49

标签: pandas

我在熊猫中有以下数据框

  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  

喷嘴应该是唯一的编号。 如何在熊猫中做到这一点?

1 个答案:

答案 0 :(得分:3)

将列nozzle转换为字符串drop_duplicates并将GroupBy.applyjoin一起使用:

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]