如何用整数减日期生成新列?解决Pandas timedelta类型错误
解决方法
问题出在Python标准库的timedelta只能接受单个数值,无法处理Pandas的Series对象。你需要用Pandas专门的时间差转换函数pd.to_timedelta()来处理整列数据,具体代码如下:
import pandas as pd df['APPLIED_DATE'] = pd.to_datetime('2023-01-21') - pd.to_timedelta(df['MEMBERSHIP_LENGTH'], unit='days')
原理说明
pd.to_timedelta()支持直接传入Series作为参数,通过unit='days'指定将列中的整数值转换为对应的天数差,这样就能和指定的datetime标量做元素级减法,得到每个用户的会员申请日期。
示例演示
比如构造一个测试DataFrame验证效果:
df = pd.DataFrame({'MEMBERSHIP_LENGTH': [100, 50, 30]}) df['APPLIED_DATE'] = pd.to_datetime('2023-01-21') - pd.to_timedelta(df['MEMBERSHIP_LENGTH'], unit='days') print(df)
输出结果:
MEMBERSHIP_LENGTH APPLIED_DATE 0 100 2022-10-13 1 50 2022-11-30 2 30 2022-12-22
内容的提问来源于stack exchange,提问作者wahyu dimas
相关产品推荐
相关产品推荐

