jshapen Asked:2020-09-14 15:00:27 +0000 UTC2020-09-14 15:00:27 +0000 UTC 2020-09-14 15:00:27 +0000 UTC 值的个数大于前面的N个周期 772 如何在数据框中创建一个新列,其值的数量在一定时期内大于以前的值? 例子。N=4 Вход Выход 5 0 6 0 7 0 5 2 6 2 4 1 3 1 4 1 5 1 7 3 8 3 python 1 个回答 Voted Best Answer MaxU - stop genocide of UA 2020-09-14T16:04:29Z2020-09-14T16:04:29Z 来源 DF: In [33]: df Out[33]: col res 0 5 0 1 6 0 2 7 0 3 5 2 4 6 2 5 4 1 6 3 1 7 4 1 8 5 1 9 7 3 10 8 3 解决方案 - 使用pandas.Series.rolling(...): In [34]: N = 4 In [35]: df["new"] = (df["col"] .rolling(N) .apply(lambda x: x.diff().gt(0).sum(), raw=False) .fillna(0)) 结果: In [36]: df Out[36]: col res new 0 5 0 0.0 1 6 0 0.0 2 7 0 0.0 3 5 2 2.0 4 6 2 2.0 5 4 1 1.0 6 3 1 1.0 7 4 1 1.0 8 5 1 2.0 9 7 3 3.0 10 8 3 3.0 考试: In [37]: df["res"] == df["new"] Out[37]: 0 True 1 True 2 True 3 True 4 True 5 True 6 True 7 True 8 False # <--- по-моему, вы ошиблись в расчетах для этой строки 9 True 10 True dtype: bool
来源 DF:
解决方案 - 使用pandas.Series.rolling(...):
结果:
考试: