熊猫在列中列出唯一值并将其分配给单独的列

时间:2020-06-08 07:30:26

标签: python pandas numpy

我有下表:

enter image description here

我想在列出唯一值的同一数据框中创建新的数据框或列。例如

enter image description here

我使用了以下代码:

data.groupby('EMAIL')['Classification'].transform('nunique')

但是它给了我很多唯一值(对于CLASSIFICATION,它是2), 但是我想记下列表格式的值。这样一来,我将删除重复的行,并为每个唯一的电子邮件ID放入一行。请对此提供建议。

谢谢!

2 个答案:

答案 0 :(得分:3)

为了性能起见,将set用于唯一值并传递到GroupBy.agg中的lambda函数,顺序应与原始顺序不同:

df = data.groupby('EMAIL').agg(lambda x: ','.join(set(x))).reset_index()

对于与原始使用字典技巧相同的命令:

f = ','.join(dict.fromkeys(x).keys()) 
df = data.groupby('EMAIL').agg(f).reset_index()

答案 1 :(得分:0)

df.groupby(as_index=False)df.groupby.agg一起使用:

data.groupby('EMAIL',as_index=False).agg(lambda x: ','.join(x.unique()))