首页 > 解决方案 > 如何将时间戳从数据框列转换为仅天数?

问题描述

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

标签: pythonpandas

解决方案


您可以将 ['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 个零。


推荐阅读