Создайте новый столбец, который будет объединять несколько других столбцов, которые удовлетворяют определенному условию - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть pandas фрейм данных (население), и я хочу добавить в него новый столбец. Новый столбец должен быть - конечно, для каждого индекса / строки - суммой всех (и только) столбцов, в именах которых есть подстрока «ussr». Есть ли способ сделать это?

1 Ответ

0 голосов
/ 03 апреля 2020

Вы можете создать этот столбец, выполнив:

df['MySum'] = df[df.columns[df.columns.str.contains('ussr', case=False)]].sum(axis=1)

Подробности:

  • df.columns.str.contains('ussr', ...) - создает список логический - содержит ли конкретный столбец ussr string.
  • case=False - без учета регистра (если вам нужно).
  • df.columns[...] - создает список столбцов , содержащий этот строка.
  • df[...] - извлекает содержимое этих столбцов.
  • sum(axis=1) - генерирует суммы для этих столбцов для каждой строки.
  • df['MySum'] = ... - сохраняет результат под данным столбцом.

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

...