pandas - 我们可以将 pandas.DatetimeIndex 的日历指定为 'noleap' 吗?或者 datetime.timedelta 可以跳过 2 月 29 日吗
问题描述
我的熊猫数据框有 DatetimeIndex: DatetimeIndex(['1950-02-07', '1951-12-30, '1952-03-04',........'2020-04 -07'],dtype='datetime64[ns]',长度=589,频率=无))
我想通过在 no-leap 365 日历中使用 timedelta by days=-4 来移动索引,例如:'1952-03-04' timedelta(days=-4) 我想得到 '1952-02-28'而不是“1952-02-29”
谁能给我一些建议?
非常感谢你。
解决方案
我们可以将 pandas.DatetimeIndex 的日历指定为 'noleap' 吗?
我想不是。
datetime.timedelta 可以跳过 2 月 29 日吗?
我想不是。
一种可能的解决方案是测试此日期并在条件下通过减去日期更改 timedelta:
a = ['1952-03-04', '1951-12-30']
idx = pd.to_datetime(a)
print (idx)
DatetimeIndex(['1952-03-04', '1951-12-30'], dtype='datetime64[ns]', freq=None)
out = idx - pd.Timedelta(4, unit='days')
print (out)
DatetimeIndex(['1952-02-29', '1951-12-26'], dtype='datetime64[ns]', freq=None)
out = np.where((out.day == 29) & (out.month == 2), out - pd.Timedelta(1, unit='days'), out)
print (out)
['1952-02-28T00:00:00.000000000' '1951-12-26T00:00:00.000000000']
推荐阅读
- list - 长列表变量减慢了颤振应用程序的性能
- r - 如何让keras在训练时利用所有可用的CPU容量?
- c++ - Can C++20 using enum apply to templates?
- python - 如何使用单独的变量编写代码来跟踪是否遇到了“break”语句?Python
- vue.js - routes.js 中的 Webpack 错误:找不到模块:错误:无法解析 route.js 中的“/views/Home”
- java - 在专用和固定基础设施上创建容器
- javascript - 模式窗口中的输入框不使用 jQuery 更新
- python-3.x - SQLAlchemy sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) 没有这样的表
- c++17 - ceil() 函数的相同参数的不同返回值
- flutter - 颤振桌面运行位于assest中的可执行文件,