Pandas中如何计算指定日期与DataFrame日期列的天数差
解决Pandas中日期字符串减法报错的问题
嘿,这个问题我之前也踩过坑!你遇到的TypeError完全是因为现在的date列和用来计算的默认日期都是字符串类型,Python根本没法直接对字符串做减法运算。咱们只需要把它们转换成Pandas支持的datetime类型,就能轻松算出天数差了。
具体步骤和代码示例
首先,咱们先把DataFrame里的date列,还有默认日期都转换成datetime对象:
import pandas as pd df = pd.DataFrame({'date': ['2022-10-01', '2022-10-04', '2022-10-17'], 'value': [100, 110, 95]}) # 将date列转为datetime类型 df['date'] = pd.to_datetime(df['date']) # 把默认日期也转为datetime对象 target_date = pd.to_datetime('2022-10-20')
接下来就可以直接做减法运算,然后提取天数差了:
# 计算天数差,用.dt.days把Timedelta结果转为整数天数 df['days_diff'] = (target_date - df['date']).dt.days
运行完之后,你查看df就会看到新增的days_diff列正好是[19, 16, 3],完全符合你的预期!
更简洁的写法
如果你不想单独定义target_date,也可以把转换和运算合并成一行:
df['days_diff'] = (pd.to_datetime('2022-10-20') - pd.to_datetime(df['date'])).dt.days
原理说明
Pandas的datetime类型专门用于处理日期时间数据,支持直接的加减运算,运算结果是Timedelta类型(表示时间差),通过.dt.days就能把这个时间差提取成整数形式的天数啦。
内容的提问来源于stack exchange,提问作者user20366263
相关产品推荐
相关产品推荐

