Python Pandas: 如何向量化使用先前值的操作?
Python Pandas: How to vectorize an operation that uses previous values?
我想做这样的事情:
df['indicator'] = df.at[x-1] + df.at[x-2]
或
df['indicator'] = df.at[x-1] > df.at[x-2]
我想边缘情况会自动处理,例如跳过前几行。
这一行应该能满足您的需求。 indicator
列的前两行将自动填充 'NaN'.
df['indicator'] = df.at.shift(1) + df.at.shift(2)
例如,如果我们有以下数据框:
a = pd.DataFrame({'date':['2017-06-01','2017-06-02','2017-06-03',
'2017-06-04','2017-06-05','2017-06-06'],
'count' :[10,15,17,5,3,7]})
date at
0 2017-06-01 10
1 2017-06-02 15
2 2017-06-03 17
3 2017-06-04 5
4 2017-06-05 3
5 2017-06-06 7
然后运行这一行将给出以下结果:
df['indicator'] = df.at.shift(1) + df.at.shift(2)
date at indicator
0 2017-06-01 10 NaN
1 2017-06-02 15 NaN
2 2017-06-03 17 25.0
3 2017-06-04 5 32.0
4 2017-06-05 3 22.0
5 2017-06-06 7 8.0
我想做这样的事情:
df['indicator'] = df.at[x-1] + df.at[x-2]
或
df['indicator'] = df.at[x-1] > df.at[x-2]
我想边缘情况会自动处理,例如跳过前几行。
这一行应该能满足您的需求。 indicator
列的前两行将自动填充 'NaN'.
df['indicator'] = df.at.shift(1) + df.at.shift(2)
例如,如果我们有以下数据框:
a = pd.DataFrame({'date':['2017-06-01','2017-06-02','2017-06-03',
'2017-06-04','2017-06-05','2017-06-06'],
'count' :[10,15,17,5,3,7]})
date at
0 2017-06-01 10
1 2017-06-02 15
2 2017-06-03 17
3 2017-06-04 5
4 2017-06-05 3
5 2017-06-06 7
然后运行这一行将给出以下结果:
df['indicator'] = df.at.shift(1) + df.at.shift(2)
date at indicator
0 2017-06-01 10 NaN
1 2017-06-02 15 NaN
2 2017-06-03 17 25.0
3 2017-06-04 5 32.0
4 2017-06-05 3 22.0
5 2017-06-06 7 8.0