我有一个非常大的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=False
或min_count=1
(取决于用例):df = df.sum(axis=1, level=0, skipna=False)
关于python - Pandas DataFrame,将重复的列添加在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28246014/