在 pd 数据框中查找与给定列表中的日期匹配的日期

Find a date in pd dataframe that matches a date in a given list

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: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我也试过这个,它可以编译但什么都不做:

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

你可以试试
df["BTCgtRES"] = df["date"].apply(lambda x: 1 if x in breakout_candles else -1).
请注意,在每次迭代时在列表中进行搜索的计算量可能很大,因此您可能希望使用 dict 作为一种足够简单的替代方法。

您可以尝试使用 isin() 而不是 in

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