使用数据框的多列进行操作并将结果保存在多列中
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
我确实浏览了多篇 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