2015-01-30 2 views
1

У меня этот очень большой DataFrame, который имеет повторяющиеся столбцы, но значения под ним нет. Я хочу объединить дубликаты столбцов и добавить значения.Pandas DataFrame, добавляя повторяющиеся столбцы вместе

Этот действительно большой DataFrame создается путем добавления серии вместе, и именно здесь происходит дублирование.

 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

ответ

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 
0

Я бы предложил использовать GroupBy:

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

Для того, чтобы заставить его работать также для мультииндексных, можно сделать следующее:

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() 
Смежные вопросы