大熊猫,跨行求和,取决于列内容

时间:2018-11-06 15:24:32

标签: python pandas numpy 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字段中指示的列求和来创建新列?例如,由于我们要对to_sum_one(4)和to_sum_three(1)求和,因此第一个条目的总数为5。

谢谢!

3 个答案:

答案 0 :(得分:1)

因此您可以在此处使用lookup

df.lookup(df.index,df.to_sum_one)+df.lookup(df.index,df.to_sum_two)
Out[282]: array([ 5, 16], dtype=int64)

答案 1 :(得分:1)

我将尝试使用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))

这就是我要做的。让我知道它是否有效。

答案 2 :(得分:0)

您是否看过documentation

assign(**kwargs) 将新列分配给DataFrame,返回一个新对象(副本),并将新列添加到原始列中。

这似乎是您想要的。