在 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)
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)