pandas 减去 Dataframe 中的2个日期列

i7uaboj4  于 2022-12-16  发布在  其他
关注(0)|答案(3)|浏览(190)

我有以下Pandas Dataframe

我想从date_of_death中减去date_of_birth来创建一个新的列“years_lived”来包含生活的年数。我尝试了以下三种方法(当然是单独的)

df['years_lived'] = (df['date_of_death'] - df['date_of_birth']).dt.days
df['years_lived'] = df['date_of_death'].sub(df['date_of_birth'], axis=0)
df['years_lived'] = df['date_of_death'] - df['date_of_birth']

但我得到了一个类型错误:- 不支持的操作数类型:“字符串”和“字符串”

vulvrdjw

vulvrdjw1#

df['years_lived'] = pd.to_datetime(df['date_of_death']) - pd.to_datetime(df['date_of_birth'])
lsmepo6l

lsmepo6l2#

pd.to_datetime会将您的日期转换为datetime,您可以从中减去一个。
https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html

v09wglhw

v09wglhw3#

在减法运算之前,你需要把日期的字符串表示转换成日期。

df['years_lived'] = (df['date_of_death'].astype(dt.timedelta) - df['date_of_birth'].astype(dt.timedelta)).dt.days


如果不起作用,则在之前转换,然后减去

df['date_of_death'] = pd.to_numeric(df['date_of_death'], errors='coerce').fillna(0).astype(int)
df['date_of_birth'] =  pd.to_numeric(df['date_of_birth'], errors='coerce').fillna(0).astype(int)
df['years_lived'] = (df['date_of_death'] - df['date_of_birth']).dt.days

相关问题