Pandas - 如何将重复的项目合并为一个包含多个列的项目

Pandas - How to combine duplicate items into one with several columns

提问人:Nairda123 提问时间:5/18/2021 更新时间:5/18/2021 访问量:812

问:

我有下面的 DataFrame

dataframe

如您所见,ItemNo 1 被复制了 3 次,并且每列都有一个与之对应的值。

我正在寻找一种方法来检查所有列,如果它们匹配,则将 Price、Sales 和 Stock 作为一个条目,而不是三个。

任何帮助将不胜感激。

Python pandas 透视 多列 数据预处理

评论

1赞 Henry Ecker 5/18/2021
请将一小部分数据作为可复制的代码段包含在内,该代码可用于测试,以及所提供数据的预期输出。请参阅 MRE - Minimal, Reproducible, Example, 和 How to make good reproducible pandas examples
0赞 Henry Ecker 5/18/2021
请将任何相关信息以文本形式直接包含在您的问题中,不要链接或嵌入源代码或数据的外部图像。图像很难有效地为您提供帮助,因为它们无法复制,并且由于无法搜索而提供较差的可用性。请参阅:为什么在提问时不上传代码/错误的图像?

答:

1赞 Pawan Jain 5/18/2021 #1

只需删除所有 NaN 实例并重新定义列名

df = df1.apply(lambda x: pd.Series(x.dropna().values), axis=1)
df.columns = ['ItemNo','Category','SIZE','Model','Customer','Week Date','<New col name>']

要收敛到一行,您可以像这样使用groupby

df.groupby('ItemNo', as_index=False).first()

评论

0赞 Nairda123 5/18/2021
嘿,谢谢你!我更接近了,但是使用这种方法,我仍然得到 ItemNo 1 三次,并且每个实例都有自己的值。我正在尝试更改它,以便 ItemNo1 只有一行和三列具有相应值
1赞 Pawan Jain 5/18/2021
嘿,我更新了它,你可以分组解决它
0赞 Nairda123 5/18/2021
太好了,谢谢!是否有其他选项可以按更多字段分组?我相信我正在删除很多值,理想情况下,我需要检查“价格”之前的所有列,如果所有这些匹配,则进行分组操作:)(日期和项目通常相同,不同的客户等)
1赞 Pawan Jain 5/18/2021
是的,您可以为多个列添加更多列,并以相同的方式添加更多列:)df.groupby(['ItemNo', 'Category' ,'Size',...], as_index=False).first()
0赞 Nairda123 5/19/2021
救星!熊猫太整洁了,谢谢伙计!