python - 如何将时间戳从数据框列转换为仅天数?
问题描述
1 - 我尝试将“天”列转换为天数 ->“-1 天 +08:22:13.269259”到“-1”
2 - 和列截止日期只是一个日期 - >“0021-06-09 00:00:00”到“09-06-21”
>>>new['Days'] = (datetime.datetime.today() - pd.to_datetime(new['Deadline'], format=("00%y-%m-%d %H:%M:%S")))
>>>df
Days Deadline
0 -1 days +08:22:13.269259 0021-06-09 00:00:00
1 0 days 08:22:13.269259 0021-06-08 00:00:00
2 -1 days +08:22:13.269259 0021-06-09 00:00:00
3 -1 days +08:22:13.269259 0021-06-09 00:00:00
4 -2 days +08:22:13.269259 0021-06-10 00:00:00
5 -1 days +08:22:13.269259 0021-06-09 00:00:00
6 -2 days +08:22:13.269259 0021-06-10 00:00:00
7 -2 days +08:22:13.269259 0021-06-10 00:00:00
8 -6 days +08:22:13.269259 0021-06-14 00:00:00
9 -6 days +08:22:13.269259 0021-06-14 00:00:00
1 - 当我尝试转换为天数时,我得到错误“timedelta64[ns]'不匹配格式'%d'”
new['Days'] = datetime.datetime.strptime(str(new['Deadline']), '%d')
2 - 当我尝试将 timetemp 转换为这种格式的数据(“%d-%m-%y”)时,出现错误“Out of bounds nanosecond timestamp: 21-06-11 00:00:00”
new['DME'] = pd.to_datetime(df['DME'], format=("00%y-%m-%d %H:%M:%S")).date
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 21-06-11 00:00:00
解决方案
您可以将 ['days'] 转换为字符串并切掉前两个字符。
- df['days'] = df['days'].str[:2]
- df['days'].astype(int)
- df['截止日期'] = df['截止日期'].str.lstrip('00')
- df['截止日期']=df['截止日期'].dt.strftime('%d-%m-%y')
- df['新截止日期'] = df['截止日期'] + df['天数']
我喜欢 Anurag 对截止日期的条件切片。除非所有截止日期值都以“00”开头。在这种情况下,您应该删除前 2 个零。
推荐阅读
- ruby - 在 Ruby 中,是否可以在超类的子类中定义常量?
- javascript - 使用 php 和 ajax 使用 3 个或更多下拉选择选项过滤表
- javascript - 使用异常进行输入验证对性能不利吗?
- windows - 检查系统声音是打开还是关闭
- c++ - 用非常量变量或函数的返回值初始化 C 样式数组
- html - Bootstrap justify-content-around 最后一项放错了位置
- spring - Intellij IDE上的Springframework tomcat错误
- python - Keras .fit 提供比手动 Tensorflow 更好的性能
- docker - Docker 容器未在代码更改时更新
- python - 仅在特定列上使用 FeatureTools