我想根据相应列的计算在数据帧中插入一个新列,
这对我有用:
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.apply
与 axis=1
一起使用,用于每行的进程数,将 lambda 函数用于传递列名称:
df['new column'] = df.apply(lambda x: foo(x['X'], x['Y'], x['Z']), axis=1)