我有一个大数据框(大约35列),其中1列-concat_strs
是数据框中8列的串联。这用于检测重复项。我想做的是在列concat_strs
上聚集行,其中val, abs_val, price, abs_price
具有相同的值(使用总和)。
我已完成以下操作:
agg_attributes = {'val': 'sum', 'abs_val': 'sum', 'price': 'sum', 'abs_price': 'sum'}
final_df= df.groupby('concat_strs', as_index=False).aggregate(agg_attributes)
但是,当我查看final_df时,我注意到2个问题:
final_df.reindex(columns=df.columns)
,但是其他所有列都是NaN
final_df
中的行数与df
中的行数相同(约30万行)。但是,应该减少它(手动检查)问题是-做错了什么,有什么改进建议吗?
答案 0 :(得分:0)
您对concat_strs
进行分组,因此仅保留concat_strs
和agg_attributes
中的列,因为进行groupby
操作,熊猫不知道如何处理其他列。 / p>
您可以在所有列中加上first
来保持该列的第一个值(如果重复)或last
等。这取决于您的需求。
也可以通过这种方式来消除重复操作,我敢打赌,您可以简单地删除所有重复项吗?
您也不需要concat_strs
,因为groupby
支持在要分组的列列表中的输入
答案 1 :(得分:0)
不确定我是否正确理解了这个问题。但是你可以试试看吗?
final_df = df.groupby(['concat_strs']).sum()