Панды, суммирование по строкам, в зависимости от содержимого столбца - PullRequest
0 голосов
/ 06 ноября 2018

У меня странный Dataframe, который настроен следующим образом:

header_one | header_two | header_three | header_four | to_sum_one | to_sum_two
     4             5            1              2       header_one   header_three
     2             4            10             12      header_two   header_four

Можно ли мне создать новый столбец путем суммирования столбцов, указанных в полях sum_one и sum_two? Например, первая запись суммирует до 5, поскольку мы хотим суммировать to_sum_one (4) и to_sum_three (1)

Спасибо!

Ответы [ 3 ]

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

Так что вы можете использовать lookup здесь

df.lookup(df.index,df.to_sum_one)+df.lookup(df.index,df.to_sum_two)
Out[282]: array([ 5, 16], dtype=int64)
0 голосов
/ 06 ноября 2018

Я бы попробовал использовать apply, так как это самый простой способ, которым вы можете использовать это, просто получите нужные параметры в виде .value и используйте их во вставке.

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

Возможно, есть лучший способ сделать это, но это может помочь.

    header_one | header_two | header_three | header_four | to_sum_one | to_sum_two
         4             5            1              2       header_one   header_three
         2             4            10             12      header_two   header_four


def sum(param1, param2):
     return df.param1+ df.param2

Затем вставьте:

df.insert(6, "Sum", sum(df.to_sum_one, df.to_sum_two))

Вот как бы я это сделал. Дайте мне знать, если это работает.

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

Вы изучили документацию ?

assign(**kwargs) Назначить новые столбцы в DataFrame, возвращая новый объект (копию) с новыми столбцами, добавленными к исходным.

Кажется, это то, что вы хотите.

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