使用数据框的多列进行操作并将结果保存在多列中

Use multiple columns of a dataframe for an operation and save the result in multiple columns

我确实浏览了多篇 Whosebug 帖子以了解如何解决这个问题,但一无所获。

所以,我有一个包含三个属性的数据框:id、X1、Y1。 我需要将数据帧的每个 instance/entry 传递给一个函数(例如 func),其中 returns 两个值:X2、Y2。操作基本上是这样的:

X2, Y2 = func(X1, Y1)

我需要将每个条目的 X2、Y2 保存为一个新列,以便新数据框看起来像:id、X1、Y1、X2、Y2

我不确定如何使用 pandas 执行此操作。能否请您指点一下?

非常感谢您付出的努力和时间!

我很确定我们需要更多详细信息,但您可以使用

df.apply(func, axis=1, expand=True)

更好的是

df["X2"] = df["id"] + df["X1"] + df["Y1"]

我相信后者是矢量化的,而前者是 运行 作为 for 循环

希望对您有所帮助

我相信这会完成您的问题(请注意,在此示例中 func() 已被赋予任意示例实现):

import pandas as pd
df = pd.DataFrame({
    'X1' : [1,2,3,4,5],
    'Y1' : [2,2,3,3,4]
})
def func(a, b):
    return a - b, a + b
df[['X2', 'Y2']] = pd.DataFrame(df.apply(lambda x: func(x['X1'], x['Y1']), axis=1).tolist(), columns=['foo', 'bar'])
print(df)

输出:

   X1  Y1  X2  Y2
0   1   2  -1   3
1   2   2   0   4
2   3   3   0   6
3   4   3   1   7
4   5   4   1   9