在 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 数据框中查找与给定列表中的日期匹配的日期 [重复]的主要内容,如果未能解决你的问题,请参考以下文章