2017-04-07 93 views
2

日期和INT列的我有一个数据帧,看起来像这样:差异大熊猫

raw_data = {'SeriesDate':['2017-03-10','2017-03-13','2017-03-14','2017-03-15'],'Test':['1','2','3','4']} 
import pandas as pd 
df = pd.DataFrame(raw_data,columns=['SeriesDate','Test']) 
df['SeriesDate'] = pd.to_datetime(df['SeriesDate']) 

我想从日期字段减去数场以日期到达,但是当我这样做:

df['TestDate'] = df['SeriesDate'] - pd.Series((dd) for dd in df['Test']) 

我得到以下类型错误:

TypeError: incompatible type [object] for a datetime/timedelta operation 

任何想法如何,我可以解决这个?

+0

确实在测试项目代表天或秒或数年? – plasmon360

+0

它代表天 – sg91

回答

1

您可以使用to_timedelta

df['TestDate'] = df['SeriesDate'] - pd.to_timedelta(df['Test'].astype(int), unit="d") 

print(df) 

    SeriesDate Test TestDate 
0 2017-03-10 1  2017-03-09 
1 2017-03-13 2  2017-03-11 
2 2017-03-14 3  2017-03-11 
3 2017-03-15 4  2017-03-11 
+0

不要认为它的工作。这似乎总是从SeriesDate中抽出1天。 – sg91

+0

@ sg91你说得对,相应地更新了答案。 – pansen