我有一个具有200k行和大约50列的DataFrame,在不同的列中具有相同的id,如下所示:
df = pd.DataFrame({'pic': [1, 0, 0, 0, 2, 0, 3, 0, 0]
, 'story': [0, 1, 0, 2, 0, 0, 0, 0, 3]
, 'des': [0, 0, 1, 0, 0, 2, 0, 3, 0]
, 'some_another_value': [2, 1, 6, 5, 4, 3, 1, 1, 1]
, 'some_value': [1, 2, 3, 4, 5, 6, 7, 8, 9]})
pic story des some_another_value some_value
0 1 0 0 2 nan
1 0 1 0 nan 2
2 0 0 1 nan 3
3 0 2 0 nan 4
4 2 0 0 4 nan
5 0 0 2 nan 6
6 3 0 0 1 nan
7 0 0 3 nan 8
8 0 3 0 nan 9
我想合并“ pic”,“ story”,“ des”中具有相同值的行
pic story des some_another_value some_value
0 1 1 1 2 5
3 2 2 2 4 10
6 3 3 3 1 17
如何实现?
*我正在寻找不包含for循环的解决方案
*不建议使用求和方法
答案 0 :(得分:0)
当您的预期输出数据清楚地表明总和时,我不确定为什么您说不建议使用总和方法。对于您的样本数据,在每一行中,pic, story, des
的正好为零,因此:
df.groupby(df[['pic','story', 'des']].sum(1)).sum()
给予
pic story des some_another_value some_value
1 1 1 1 2.0 5.0
2 2 2 2 4.0 10.0
3 3 3 3 1.0 17.0