我正在使用在csv文件中具有记录的数据集:
C_id C_Name S_Name Phone
97 [Bedsheet] Shree Collection 77422222
97 [Bedsheet] Shree Collection 77422222
105 [Jeans] Shree Collection 77422222
61 [Kurti] F Fashion 9040645
95 [Lehenga] Shree Collection 77422222
61 [Kurti] F Fashion 9040645
73 [Cotton Kurti] F Fashion 9040645
117 [Earring] Banti 90406459
我想以如下方式显示数据:
C_id C_Name S_Name Phone
97,105,95 Bedsheet,Jeans,Lehenga Shree Collection 77422222
61,73 Kurti,Cotton Kurti F Fashion 9040645
117 Earring Banti 90406459
如何实现
答案 0 :(得分:0)
您可以将groupby
与agg
和两个str.join
函数一起使用。您需要特别注意的部分:
C_id
,由于str.join
需要字符串,因此您需要将int
转换为str
。C_Name
,您有一系列列表。 itertools.chain
是将这些列表平整为非嵌套可迭代的有效方法。这是一个可行的示例:
from itertools import chain
agg_funcs = {'C_id': lambda x: ','.join(map(str, x)),
'C_Name': lambda x: ','.join(chain.from_iterable(x))}
res = df.groupby(['S_Name', 'Phone']).agg(agg_funcs).reset_index()
print(res)
S_Name Phone C_id C_Name
0 Banti 90406459 117 Earring
1 F Fashion 9040645 61,61,73 Kurti,Kurti,Cotton Kurti
2 Shree Collection 77422222 97,97,105,95 Bedsheet,Bedsheet,Jeans,Lehenga