我想根据相应列的计算将新列插入数据框,
这对我有用:
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']]
这是我尝试过的方法,但是它不接受语法。 我可以遍历,但我想内联计算。
有人可以帮忙吗?
答案 0 :(得分:1)
将DataFrame.apply
与axis=1
一起用于每行的进程,并将lambda函数用于传递列的名称:
df['new column'] = df.apply(lambda x: foo(x['X'], x['Y'], x['Z']), axis=1)
答案 1 :(得分:1)
您可以直接访问基础的numpy数组:
df['new column'] = [foo(x, y, z) for x, y, z in df[['X', 'Y', 'Z']].values]
当心,它可能是您想要的(它可能比迭代或应用要快),但是您无法从numpy数组访问列名的索引。