Панды - объединение нескольких столбцов с одним и тем же именем? - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть несколько столбцов с одинаковыми именами (т. Е. 3 столбца с именем «box»), и мне нужен один столбец, который суммирует значения, чтобы я мог объединить свои кадры данных.Это может произойти несколько раз.

Я пробовал df1 = df.groupby(level=0, axis=1).sum(), но у меня есть один столбец без значений.(Т. Е. В первой строке «box»: 9, «box»: 1, «box»: 4 должен стать одним столбцом с именем «box» со значением 14, но он показывает один столбец с именем «box», но без значения).)

1 Ответ

2 голосов
/ 28 сентября 2019

Вы можете суммировать, основываясь на именах столбцов, используя df['column_name'].sum(axis=1) и указав, для какого столбца вы хотите получить результаты.

Простой пример ниже:

>>> df
   a  b   c  b   e
0  1  5  dd  1   6
1  2  9  ee  1  10
2  3  1  ff  1   2
>>> df['f'] = df['b'].sum(axis=1)
>>> df
   a  b   c  b   e   f
0  1  5  dd  1   6   6
1  2  9  ee  1  10  10
2  3  1  ff  1   2   2

Обратите внимание, что это не таксуммируя каждое значение в строке, только значения из столбцов с именем 'b'.

Это работает, потому что когда вы вызываете столбец по имени и его дубликат, pandas распознает этот факт.Например:

>>> df['a']
0    1
1    2
2    3
Name: a, dtype: int64
>>> df['b']
   b  b
0  5  1
1  9  1
2  1  1
>>> df.columns.get_loc('a')
0
>>> df.columns.get_loc('b')
array([False,  True, False,  True, False, False])

Я бы порекомендовал переименовать дубликаты имен столбцов и избежать неопределенности, связанной с наличием повторяющихся имен в будущем. Этот вопрос содержит множество предложений о том, как это сделать, а также о том, как этого избежать при импорте из других источников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...