2017-02-22 27 views
2

Я был бы признателен, если бы кто-то мог помочь мне с проблемой pandas dataframe, которую у меня есть.Группировка столбцов в Pandas Dataframe

Я пытаюсь сгруппировать рамку данных pandas по столбцам, но не знаю, как это сделать. У меня есть dataframe с повторяющимися именами столбцов (A-х и B), и хотели бы, чтобы сгруппировать их, чтобы вернуть максимальное значение А-х и Б

Дублированный Колонка Dataframe

index  | A | A | A | B | B | 
-------------------------------- 
2015-01-01 | | 1 | 7 | 1 | | 
-------------------------------- 
2015-01-02 | 3 | | | | 5 | 

Dataframe после обработки

index  | A | B | 
-------------------- 
2015-01-01 | 7 | 1 | 
--------------------- 
2015-01-02 | 3 | 5 | 

unique_cols = [A,B] 
df.groupby(by = cols, axis = 1).max() 

Это не работает, так как я получаю сообщение об ошибке, связанное с сообщением о том, что не является одномерным. Я также попытался преобразовать данные и группировать строки. Однако я получаю сообщение IndexError (индекс 0 находится вне границ для оси 0 с размером 0)

Вопрос:

Как группировке dataframe с повторяющимися столбцов, чтобы вернуть максимум из них из группа?

ответ

4

Я думаю, что вам нужен первые столбцы фильтра от подмножества, а затем groupby всех значениями столбцов по level=0 с axis=1:

cols = ['A','B'] 
df = df[cols].groupby(level = 0, axis = 1).max() 
print (df) 
       A B 
index    
2015-01-01 7.0 1.0 
2015-01-02 3.0 5.0 

Последние при необходимости приведения к int:

df = df[cols].groupby(level = 0, axis = 1).max().astype(int) 
print (df) 
      A B 
index   
2015-01-01 7 1 
2015-01-02 3 5 
+1

Спасибо, я провел долго пытаясь понять это, и вы сделали это очень легко! – 12avi

Смежные вопросы