如何避免减去timedelta后产生时间

时间:2018-09-06 04:27:28

标签: python pandas timedelta

我有一个如下所示的数据框

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

实际上是造成这种情况的原因,怎么解决?

1 个答案:

答案 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