将新列插入从多个变量计算的数据帧中



我想根据相应列的计算在数据帧中插入一个新列,

这对我有用:

df['new column'] = [ foo(x) for x in df['X']]

现在,如果我们想基于> 1 列的计算

df['new column'] = [ foo(x, y, z) for x, y, z in df['X', 'Y', 'Z']]

这是我尝试过的,但它不接受语法。我可以迭代,但我想内联计算。

谁能帮忙?

您可以直接访问底层的 numpy 数组:

df['new column'] = [foo(x, y, z) for x, y, z in df[['X', 'Y', 'Z']].values]

请注意,它可能是您想要的(它可能比迭代或应用更快(,但您无法访问 numpy 数组中的列名索引。

DataFrame.applyaxis=1 一起使用,用于每行的进程数,将 lambda 函数用于传递列名称:

df['new column'] = df.apply(lambda x: foo(x['X'], x['Y'], x['Z']), axis=1)

最新更新