首页 > 解决方案 > 使用熊猫计算日期之间的日期

问题描述

|submit_date |  approved_date|
------------------------------
|0  1/6/2021    |1/19/2021|
|1  1/5/2021    |1/5/2021|
|2  1/5/2021    |1/5/2021|
|3  1/6/2021    |1/7/2021|
|4  1/7/2021    |1/7/2021|

我上传了一个包含超过 200,000 条记录的 csv 文件。使用 df=pd.read_csv() 有一些空列,可以用零填充它们吗?这就是我收到此错误的原因吗?

date1=pd.Series(df[" Create Date"])
date2=pd.Series(df[" Issue Date"])

date_df = pd.DataFrame(dict(submit_date = date1, approved_date = date2))
date_df

我可以通过这组代码看到上述内容。当我尝试计算日期之间的日期数时。使用时出现“无法将字符串转换为浮点数:'1/6/2021'”

(df['Create Date']).apply(lambda x: float(x))

当我尝试使用以下计算时,“无法将系列转换为 <class 'float'>”

diff = (float(date1) - float(date2))
diff

有人可以帮我把代码放在一起吗?谢谢

标签: pythonpandasdataframe

解决方案


如果要获取两列日期之间的天数,可以这样做:

  1. 首先将日期列从字符串转换为日期时间格式:
df['submit_date'] = pd.to_datetime(df['submit_date'], format='%m/%d/%Y')
df['approved_date'] = pd.to_datetime(df['approved_date'], format='%m/%d/%Y')

(按照@SMeznaric 的建议添加格式字符串以加快转换速度)

  1. 然后,diff通过从另一个日期中减去一个日期来创建一个以天为单位的列,并通过 获得天数dt.days,如下所示:
df['diff'] = (df['approved_date'] - df['submit_date']).dt.days

结果:

print(df)

  submit_date approved_date  diff
0  2021-01-06    2021-01-19    13
1  2021-01-05    2021-01-05     0
2  2021-01-05    2021-01-05     0
3  2021-01-06    2021-01-07     1
4  2021-01-07    2021-01-07     0

推荐阅读