标签: python pandas shift
在数据框中有两列A和B:
A B 0 1 6 1 2 7 2 1 8 3 2 9 4 1 10
我想创建一列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
命令:
df['C'] = df['B'].shift(df['A'])
不起作用。 你还有其他想法吗?
答案 0 :(得分:3)
我会使用numpy的帮助来避免apply
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
简单时间测试
答案 1 :(得分:1)
由于索引对齐,这很棘手,您可以在df上定义用户func和apply行,此处函数将对B列执行移位并返回索引值(使用{{ 1}}}属性,用于返回已移位列的索引):
.name