我有一个如下所示的数据框
Year Birthday OnsetDate
5 2018/1/1
5 2018/2/2
现在我将“开始日期”列与“日期”列相减
df['Birthday'] = df['OnsetDate'] - pd.to_timedelta(df['Day'], unit='Y')
但“生日”列的结果与时间混合在一起,如下所示
Birthday
2013/12/31 18:54:00
2013/1/30 18:54:00
结果只是一个虚拟数据,我关注的是时间将导致手术后日期不准确。有什么解决方案可以避免产生时间,以便我可以获取准确的数据。
第二个问题,我将上面的数据框合并到另一个数据框。
new.update(df)
“新”数据框“生日”列变成这样
Birthday
1164394440000000000
1165949640000000000
实际上是造成这种情况的原因,怎么解决?
答案 0 :(得分:0)
第一个问题,您应该知道使用find /hana/export/PHO/ -type d -mtime +1 -delete
并不是整整一年。如果您进行打印,则可以看到pd.to_timedelta
。
1 year = 365 days 05:49:12
如果要避免生成时间,可以使用print(pd.to_timedelta(1, unit='Y'))
365 days 05:49:12
。
DateOffset
第二个问题是由列的类型引起的,可以使用from pandas.tseries.offsets import DateOffset
df['Year'] = df['Year'].apply(lambda x: DateOffset(years=x))
df['Birthday'] = df['OnsetDate'] - df['Year']
Year OnsetDate Birthday
0 <DateOffset: years=5> 2018-01-01 2013-01-01
1 <DateOffset: years=5> 2018-02-02 2013-02-02
来解决。
pd.to_datetime