#python #pandas
#питон #панды
Вопрос:
У меня есть df pandas, в котором есть столбцы, которые необходимо суммировать с предыдущим столбцом, если они содержат слово «дополнительно». Например, вот мои панды df:
id laptops laptops extra battery cables monitor monitor extra 0 54 18 108 54 28 12 1 33 9 48 20 10 4 2 82 61 98 67 21 9 ...
Есть ли в панд способ найти столбцы, содержащие слово extra, и суммировать их с предыдущим столбцом? Это помогло бы очистить так много данных.
Спасибо
Комментарии:
1. Не могли бы вы, пожалуйста, предоставить нам код, который вы сделали до сих пор?
2. Ответ был отредактирован.
Ответ №1:
Удалите extra
текст и агрегируйте sum
для всех столбцов:
df1 = (df.rename(columns=lambda x: x.replace(' extra', '')) .groupby(level=0, axis=1, sort=False) .sum())
Или фильтруйте extra
столбцы, удаляйте extra
и добавляйте в исходные столбцы, последние удаляйте extra
столбцы:
m = df.columns.str.endswith('extra') df1 = (df.add(df.loc[:, m] .rename(columns=lambda x: x.replace(' extra', '')), axis=1, fill_value=0) .loc[:, ~m])
ИЗМЕНИТЬ: Для добавления предыдущего столбца по extra
подстроке в конце имен столбцов используйте:
m = df.columns.to_series().str.endswith('extra') df.loc[:, m] = df.loc[:, m.shift(-1, fill_value=False)] df.loc[:, m].to_numpy() df = df.loc[:, ~m] print (df) id laptops battery cables monitor 0 0.0 54.0 108.0 54.0 28.0 1 1.0 33.0 48.0 20.0 10.0 2 2.0 82.0 98.0 67.0 21.0