我有一个非常大的DataFrame,它具有重复的列,但下面的值却没有。我想将重复的列合并在一起并添加值。

这个非常大的DataFrame是通过将Series附加在一起而制成的,这就是重复发生的地方。

       Py Java Ruby C  Ruby
2010    1   5   8   1   5
2011    5   5   1   9   8
2012    1   5   8   2   8
2013    6   3   8   1   9
2014    4   8   9   9   9

所以我想将两个Ruby列加在一起以得到以下结果:
       Py Java Ruby C  Ruby
2010    1   5   13  1   5
2011    5   5   9   9   8
2012    1   5   16  2   8
2013    6   3   17  1   9
2014    4   8   18  9   9

我正在运行python 2.7

最佳答案

我建议使用groupby:

df = df.groupby(axis=1, level=0).sum()

为了使其也适用于MultiIndex,可以执行以下操作:
if df.columns.duplicated().any():
    all_levels = df.columns.nlevels
    if all_levels > 1:
        all_levels = range(all_levels)
    df = df.groupby(axis=1, level=all_levels).sum()

编辑

现在不用使用groupby而是可以简单地执行以下操作:
df = df.sum(axis=1, level=0)

请注意,nans将通过上述过程转换为0。为了避免这种情况,可以使用skipna=Falsemin_count=1(取决于用例):
df = df.sum(axis=1, level=0, skipna=False)

关于python - Pandas DataFrame,将重复的列添加在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28246014/

10-09 13:31