【发布时间】:2017-07-11 00:50:20
【问题描述】:
我正在尝试使用一列的值将另一列的值移动该数量。根据文档,Pandas shift() 采用整数,但有没有办法改用系列?
当前代码:
import pandas as pd
df = pd.DataFrame({ 'a':[1,2,3,4,5,6,7,8,9,10],
'b':[0,0,0,0,4,4,4,0,0,0]})
df['a'] = df['a'].shift(df['b'])
...这当然行不通。
期望的输出:
a b
0 1 0
1 2 0
2 3 0
3 4 0
4 1 4
5 2 4
6 3 4
7 8 0
8 9 0
9 10 0
如果它更容易,移位将始终相同,因此理论上'b' 系列可以是True / False 或其他一些二进制触发器,而.shift() 仍然可以是整数。走这条路感觉有点笨拙,但它会完成工作。
【问题讨论】:
-
它给你回溯了吗?或者当前的输出是多少?
-
@Adam,当前回溯:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().我真的没想到它会起作用,我的代码更具说明性。我正在玩.loc[]和df.index,但仍然没有取得进展。 -
shift 只是将列中的所有值移动给定的时间段而不是选择的数量。 stackoverflow.com/questions/10982089/…
-
@Adam - 我不确定如何处理该评论。我想你明白我想要达到的目标。其实我不需要使用
.shift(),只需要得到想要的输出即可。 -
我想我知道我只是想弄清楚如何措辞。大声笑