【问题标题】:Find a date in pd dataframe that matches a date in a given list [duplicate]在 pd 数据框中查找与给定列表中的日期匹配的日期 [重复]
【发布时间】:2022-01-05 18:51:27
【问题描述】:
breakout_candles= []
for _,breakout in btc_breakouts:
    breakout_candles.append(breakout)
print(breakout_candles)

输出:

 [Timestamp('2021-10-28 04:00:00+0000', tz='UTC'), Timestamp('2021-10-28 08:00:00+0000', tz='UTC'), Timestamp('2021-10-29 08:00:00+0000', tz='UTC'), Timestamp('2021-10-31 16:00:00+0000', tz='UTC'), Timestamp('2021-11-01 04:00:00+0000', tz='UTC')]

如果在 breakout_candles 中找到日期,我现在尝试将值设置为 1,否则为 -1:

 df['BTCgtRES'] = np.where((df['date'] in breakout_candles),1,-1)

但我得到了模棱两可的错误:

ValueError:Series 的真值不明确。使用 a.empty, a.bool()、a.item()、a.any() 或 a.all()。

我也试过这个,它可以编译但它不需要做任何事情:

df['BTCgtRES'] = np.where((df['date'].eq (breakout in breakout_candles)),1,-1)

【问题讨论】:

    标签: python pandas numpy time-series


    【解决方案1】:

    您可以尝试使用isin() 代替in

     df['BTCgtRES'] = np.where((df['date'].isin(breakout_candles)),1,-1)
    

    【讨论】:

      【解决方案2】:

      你可以试试
      df["BTCgtRES"] = df["date"].apply(lambda x: 1 if x in breakout_candles else -1).
      请注意,每次迭代时在列表中搜索可能会耗费大量计算资源,因此您可能希望使用 dict 作为替代方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-15
        • 1970-01-01
        • 2018-04-03
        • 2018-11-07
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        • 2010-11-20
        相关资源
        最近更新 更多