Pandas 中的变量转换

Joe*_*Joe 3 python shift pandas

在数据框中有两列 A 和 B:

   A   B
0  1   6
1  2   7
2  1   8
3  2   9
4  1  10
Run Code Online (Sandbox Code Playgroud)

我想创建一个 C 列。 C 必须将 B 的值按 A 的值移动:

   A   B   C 
0  1   6 NaN
1  2   7 NaN
2  1   8   7
3  2   9   7
4  1  10   9
Run Code Online (Sandbox Code Playgroud)

命令:

df['C'] = df['B'].shift(df['A'])
Run Code Online (Sandbox Code Playgroud)

不起作用。你还有其他建议吗?

piR*_*red 5

我会使用帮助numpy来避免apply

l = np.arange(len(df)) - df.A.values
df['C'] = np.where(l >=0, df.B.values[l], np.nan)
df

   A   B    C
0  1   6  NaN
1  2   7  NaN
2  1   8  7.0
3  2   9  7.0
4  1  10  9.0
Run Code Online (Sandbox Code Playgroud)

简单的时间测试

在此处输入图片说明