python - 使用熊猫计算日期之间的日期
问题描述
|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
有人可以帮我把代码放在一起吗?谢谢
解决方案
如果要获取两列日期之间的天数,可以这样做:
- 首先将日期列从字符串转换为日期时间格式:
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 的建议添加格式字符串以加快转换速度)
- 然后,
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
推荐阅读
- python - 如何使用 xarray、numpy 和 Basemap 从我的数据集中屏蔽海洋区域?
- node.js - 从数据库中获取的来自 ID 的角色特定命令
- matplotlib - 子图matplotlib中的水平间距
- python - 如何修改python中每个列表/元组中的第一个值?
- django - 如何使用 Bootstrap 在 Django 中自定义复选框和收音机?
- c# - 尝试使用 c# 务实地添加列时抛出不正确的语法和异常
- android - 从 Firebase 检索数据无法正常工作
- python - 使用一列月份过滤熊猫数据框以保留最近的 n 个月
- javascript - 如果属性存在,是否有仅在目的地上分配属性的功能?
- xml - 在 XML 1.0 中使用分号分割字符串