【发布时间】:2018-01-16 16:33:54
【问题描述】:
我正在尝试确定某列连续多少天高于或低于某个阈值。
>>> df.head()
Open High Low Close Volume
Date
2004-08-19 49.96 51.98 47.93 50.12 NaN
2004-08-20 50.69 54.49 50.20 54.10 NaN
2004-08-23 55.32 56.68 54.47 54.65 NaN
2004-08-24 55.56 55.74 51.73 52.38 NaN
2004-08-25 52.43 53.95 51.89 52.95 NaN
>>>
对于上面的示例,我希望另一列 df['RDA'] 在列 Open 超过 50 的每一连续天递增。对于连续低于 50 的每一天,我想要第二列 df[ 'RDB'] 递增和 df['RDA'] 重置为 0。我尝试过 if/then 逻辑,但它不喜欢那样并给我一个值错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). how can i sort it out
我希望我的数据框的输出如下所示:
>>> df.head()
Open High Low Close Volume RDA RDB
Date
2004-08-19 51.96 51.98 47.93 50.12 NaN 1 0
2004-08-20 50.69 54.49 50.20 54.10 NaN 2 0
2004-08-23 55.32 56.68 54.47 54.65 NaN 3 0
2004-08-24 45.56 55.74 51.73 52.38 NaN 0 1
2004-08-25 42.43 53.95 51.89 52.95 NaN 0 2
2004-08-26 41.96 51.98 47.93 50.12 NaN 0 3
2004-08-27 40.69 54.49 50.20 54.10 NaN 0 4
2004-08-28 55.32 56.68 54.47 54.65 NaN 1 0
2004-08-29 55.56 55.74 51.73 52.38 NaN 2 0
2004-08-30 52.43 53.95 51.89 52.95 NaN 3 0
>>>
Pandas 可以做到这一点吗?我知道您可以计算一列中的值,但到目前为止我一直无法找到具有连续值的方法。带有 2 个变量的 if/then 语句会起作用,但就像我上面提到的,当我尝试这样做时会出现值错误。任何帮助将不胜感激。
【问题讨论】:
标签: python python-3.x pandas