我有这个非常大的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
答案 0 :(得分:3)
我建议使用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()
答案 1 :(得分:2)
我不确定为什么你要保存旧的值列,如果你要总结它们,所以这是一种方法:
df = pd.DataFrame({'col1':x, 'col2':y, 'col3':z}, index=a)
df.columns = ['Ruby', 'Python', 'Ruby']
df['Ruby'] = df['Ruby'].sum(axis=1)
df = df.T.drop_duplicates()
df = df.T
使用如下所示的起始数据框:
Ruby Python Ruby
2010 1 2 1
2011 2 4 3
2012 3 6 5
2013 4 8 7
2014 5 10 9
然后成为:
Ruby Python
2010 2 2
2011 5 4
2012 8 6
2013 11 8
2014 14 10