【问题标题】:Pandas convert date format and subtract to get time in days [duplicate]熊猫转换日期格式并减去以天为单位获取时间[重复]
【发布时间】:2019-01-20 06:40:41
【问题描述】:

我有一个数据框,其中包含点格式 (31.07.2018) 的开始日期和结束日期列,但我似乎无法正确地将其转换为破折号格式 (2018-07-31)。

我尝试在加载 CSV 文件时解析日期、pd.to_datetime 和 df[col].dt.strftime(),但这些方法都没有给我所需的结果。

如何获得我需要的时间格式?以及如何减去日期以获得以天为单位的时间段?

编辑:

日期列示例:

0     31.07.2018
1     07.08.2018
2     10.08.2018
3     02.08.2018
4     14.07.2018
5     03.08.2018
6     31.07.2018
7     11.08.2018
8     08.08.2018
9     08.08.2018
10    10.08.2018
11    20.07.2018
12    09.08.2018
13    20.07.2018
14    07.08.2018
15    07.08.2018
16    11.08.2018
17    11.08.2018
18    12.08.2018

当我尝试 pd.to_datetime(column) 时,我得到以下信息:

0    2018-07-31
1    2018-07-08
2    2018-10-08
3    2018-02-08
4    2018-07-14
5    2018-03-08
6    2018-07-31
7    2018-11-08
8    2018-08-08
9    2018-08-08
10   2018-10-08
11   2018-07-20
12   2018-09-08
13   2018-07-20
14   2018-07-08
15   2018-07-08
16   2018-11-08
17   2018-11-08
18   2018-12-08

如您所见,月份和日期混杂在一起,因为我知道月份只能是 07 和 08。我该如何解决这个问题?

【问题讨论】:

  • pd.to_datetime 的尝试是什么?并减去哪两个日期?

标签: python pandas datetime format


【解决方案1】:

你可以用 to_datetime 转换它们

import pandas as pd

df = pd.DataFrame({'D' : ['31.07.2018','30.03.2017']})

df['New_date'] = pd.to_datetime(df.D)
df

编辑: 如果前 2 位数字是日期,则可以添加 dayfirst 选项:

df['New_date'] = pd.to_datetime(df.D,dayfirst=True)

`

【讨论】:

  • 我已经尝试过这种方法,但是有些行的月份和日期互换了,我不知道函数为什么这样做
  • 我不得不手动重新排列每个日期的数字以使您的功能正常工作。感谢您的帮助 =)
猜你喜欢
  • 2018-11-15
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-09-22
相关资源
最近更新 更多