我正在尝试创建一个函数,我将.apply()到一个dataframe:
- 从函数中提供的参数中移除一个工作日
- 检查这个新的一天是否在特定的日期集合中(格式为日期时间索引)
我已经简化了函数的逻辑来解决这个问题-稍后我将添加更多的逻辑。
我的职能:
def test(trade_date):
if (trade_date - BDay(1)).isin(pricing_date):
return True
else:
return False
错误:
AttributeError: 'Timestamp' object has no attribute 'isin'
看起来使用.isin和Timestamp有一个问题。但是,当我在dataframe本身中运行代码进行测试时:
df['Check'] = df['test_date'].isin(pricing_date)
返回预期的输出-- isin()可以正确处理此数据。
TradeDate
2023-01-03 False
2023-01-03 False
2023-01-03 False
2023-01-03 False
2023-01-03 False
...
2023-03-22 True
2023-03-22 True
2023-03-22 True
2023-03-22 True
2023-03-22 True
Name: Check, Length: 14324, dtype: bool
调用.isin()的列的数据类型为:datetime 64 [ns],但不确定如何将函数中的时间戳转换为这种数据类型-我在许多地方读到它们实际上是等效的,只是python vs pandas的类型。
Name: test_date, Length: 14324, dtype: datetime64[ns]
任何帮助是赞赏!
尝试将时间戳传递到.isin中-直接在 Dataframe 上运行时的预期输出。
1条答案
按热度按时间tvmytwxo1#
Pandas dataframe
apply
在pd.Series
内部的所有 values 上运行函数,而不是在pd.Series
中运行函数。因此,trade_date
将是一个时间戳,它没有isin
方法。你应该这样做:或者,更简单: