数据框,如果大小写基于其先前的元素

时间:2018-10-01 17:43:57

标签: python pandas dataframe

我正在尝试创建以下“算法”

df['x'] = np.where(sum(df['x'][i-1],3)>10, 10, 5)

这里的想法是,如果从前一个元素开始的最后3个元素的滚动总和为正,然后为5,否则为10。我正在寻找一种没有循环的数据帧样式解决方案。注意:df ['x']之前不存在;这是一个新列。所以结果应该是这样的:

x
5
5
5
10
10
.
.
.
10

1 个答案:

答案 0 :(得分:0)

您可以使用熊猫提供的滚动功能。

df.loc [df ['column_you_want_to_use_for_rolling']。rolling(3).sum()> 0,'x'] = 5

您可以更改条件以适合您的要求。