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

Posted

技术标签:

【中文标题】在 pd 数据框中查找与给定列表中的日期匹配的日期 [重复]【英文标题】:Find a date in pd dataframe that matches a date in a given list [duplicate] 【发布时间】: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)

【问题讨论】:

【参考方案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 作为替代方案。

【讨论】:

以上是关于在 pd 数据框中查找与给定列表中的日期匹配的日期 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在groupby期间将日期字符串转换为agg函数中的日期时间

熊猫从不统一的日期列表中查找一年前的日期

在python中的数据框中计算与引用可变值的条件相匹配的行

将熊猫数据框中的多列更改为日期时间

如何更改 Pandas 数据框中的日期格式? [复制]

Pandas:如何在数据透视表数据框中仅添加最新日期