我有这个数据框:
In[1]df = pd.DataFrame([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]])
In[2]df
Out[2]:
0 1 2 3 4
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
4 21 22 23 24 25
我需要实现这一点:
- 对于我的数据框中的每一行,
- 如果任意 3 个连续单元格中的 2 个或多个值大于 10,
- 那么这 3 个单元格中的最后一个应标记为 True。
根据上述标准,生成的数据框 df1 的大小应与 True 或 False 相同:
In[3]df1
Out[3]:
0 1 2 3 4
0 NaN NaN False False False
1 NaN NaN False False False
2 NaN NaN True True True
3 NaN NaN True True True
4 NaN NaN True True True
- df1.iloc[0,1] 是 NaN,因为在该单元格中,只给出了两个数字,但需要至少 3 个数字来进行测试。
- df1.iloc[1,3] 为 False,因为 [7,8,9] 中没有一个大于 10
- df1.iloc[3,4] 为 True,因为 [18,19,20] 中的 2 或更多大于 10
我认为带有函数的 dataframe.rolling.apply() 可能是解决方案,但究竟如何呢?