首页 > 解决方案 > 熊猫转换日期格式并减去以天为单位获取时间

问题描述

我有一个数据框,其中包含点格式(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。我该如何解决这个问题?

标签: pythonpandasdatetimeformat

解决方案


你可以用 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)

`


推荐阅读