我需要在数据框的末尾创建一个新列,新列中的值是应用某个函数的结果,该函数的参数基于其他列。具体来说,来自另一列,但不同的行。例如,如果我的数据框有两列,分别包含值x_i,y_i那么我的第三列将是f(x_(i-1), y_(i-1))
x_i
y_i
f(x_(i-1), y_(i-1))
我知道要创建一个新列,最简单的方法是执行以下操作
df['new_row'] = ...
但我不确定我能为此设置什么。
你可以使用 shift 方法来获取前一行的值,然后应用函数来计算新列的值。shift 方法将列中的数据沿着指定的轴进行移动,默认情况下它会将所有值向下移动1行,因此你可以利用它来获取上一行的数据。
shift
以下是一个简单的示例,假设你的 DataFrame 有两列 x 和 y,你想要新列 z 是通过函数 f(x_(i-1), y_(i-1)) 来计算的:
x
y
z
import pandas as pd # 创建示例数据框 data = {'x': [1, 2, 3, 4], 'y': [5, 6, 7, 8]} df = pd.DataFrame(data) # 定义函数 f(x, y) def f(x, y): return x + y # 示例函数 # 使用 shift 获取前一行的值 df['new_col'] = f(df['x'].shift(1), df['y'].shift(1)) print(df)
x y new_col 0 1 5 NaN 1 2 6 6.0 2 3 7 8.0 3 4 8 10.0
df['x'].shift(1)
df['y'].shift(1)
f(df['x'].shift(1), df['y'].shift(1))
f
NaN
你可以根据自己的需求修改函数 f,例如,计算其他更复杂的值或进行任何其他操作。