Как добавить все значения в столбцы панд, если имена этих столбцов совпадают с именами в списке? - PullRequest
0 голосов
/ 16 ноября 2018
list = ['abc', 'def_1', 'xyz_8']

Пример строки для df ниже

abc_1     abc_99    def_1     def_2    xyz_8    xyz_1
2         1         1         2        2        3

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

Я хочу df['sum'] = 6 (или 2 + 1 + 1 + 2) для этой строки.

1 Ответ

0 голосов
/ 16 ноября 2018

filter / str.contains

Вы можете использовать filter или str.contains, оба из которых поддерживают регулярное выражение:

L = ['abc', 'def_1', 'xyz_8']

# courtesy of @JonClements
df['result'] = df.filter(regex='|'.join(L)).sum(1)

# original
df['result'] = df.iloc[:, df.columns.str.contains('|'.join(L))].sum(1)

print(df)

   abc_1  abc_99  def_1  def_2  xyz_8  xyz_1  result
0      2       1      1      2      2      3       6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...