gpt4 book ai didi

python - 无法将输入转换为时间戳、bday_range(...) - Pandas/Python

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:57 27 4
gpt4 key购买 nike

希望生成 Pandas 数据框当前日期和月底之间工作日的天数。例如。 2017年6月26日 - 4, 2017年6月23日 - 5

我遇到了麻烦,因为我不断收到类型错误:

TypeError: Cannot convert input to Timestamp

来自行:

result['bdaterange'] = pd.bdate_range(pd.to_datetime(result['dte'], unit='ns').values, pd.to_datetime(result['bdate'], unit='ns').values)

我有一个数据框结果,其中 dte 列采用日期格式,我正在尝试创建一个新列 (bdaterange) 作为简单的整数/ float ,我可以使用它来查看工作日中距离月末还有多远确实如此。

Sample data:
bid ask spread dte day bdate
01:49:00 2.17 3.83 1.66 2016-12-20 20.858333 2016-12-30
02:38:00 2.2 3.8 1.60 2016-12-20 20.716667 2016-12-30
22:15:00 2.63 3.12 0.49 2016-12-20 21.166667 2016-12-30
03:16:00 1.63 2.38 0.75 2016-12-21 21.391667 2016-12-30
07:11:00 1.46 2.54 1.08 2016-12-21 21.475000 2016-12-30

我已经尝试过BDay()并使用该天在计算中不能是 6 和 7,但没有得到任何结果。我遇到了bdate_range我相信这正是我正在寻找的,但我得到的最接近的给了我错误 Cannot convert input to Timestamp .

我的尝试是:

result['bdate'] = pd.to_datetime(result['dte']) + BMonthEnd(0)

result['bdaterange'] = pd.bdate_range(pd.to_datetime(result['dte'], unit='ns').values, pd.to_datetime(result['bdate'], unit='ns').values)

print(result['bdaterange'])

但不确定如何解决该错误。

最佳答案

我认为您需要 bdate_range 的长度对于每一行,因此需要使用 apply 的自定义函数:

#convert only once to datetime
result['dte'] = pd.to_datetime(result['dte'])

f = lambda x: len(pd.bdate_range(x['dte'], x['dte'] + pd.offsets.BMonthEnd(0)))
result['bdaterange'] = result.apply(f, axis=1)
print (result)
bid ask spread dte day bdaterange
01:49:00 2.17 3.83 1.66 2016-12-20 20.858333 9
02:38:00 2.20 3.80 1.60 2016-12-20 20.716667 9
22:15:00 2.63 3.12 0.49 2016-12-20 21.166667 9
03:16:00 1.63 2.38 0.75 2016-12-21 21.391667 8
07:11:00 1.46 2.54 1.08 2016-12-21 21.475000 8

关于python - 无法将输入转换为时间戳、bday_range(...) - Pandas/Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44906028/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com