如何合并不同列的数据框行

时间:2019-07-17 09:30:24

标签: python-3.x pandas dataframe

我有一个具有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循环的解决方案

*不建议使用求和方法

1 个答案:

答案 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