简体   繁体   English

从timedelta python减去天数

[英]Subtracting days from timedelta python

I have a DataFrame that looks like this: 我有一个看起来像这样的DataFrame:

raw_data = {'Series_Date':['2017-03-10','2017-03-13','2017-03-14','2017-03-15'],'SeriesDate':['2017-03-10','2017-03-13','2017-03-14','2017-03-15']}
import pandas as pd
df = pd.DataFrame(raw_data,columns=['Series_Date','SeriesDate'])
df['SeriesDate'] = pd.to_datetime(df['SeriesDate'])
df['StartDate'] = df['SeriesDate'] - timedelta(days=10)
df['EndDate'] = df['SeriesDate'] - timedelta(days=3)
print df

When I try to do this: 当我尝试这样做时:

df['DateDifference'] = ((df.StartDate- df.EndDate) / 2).dt.ceil('D')

I get the following error: 我收到以下错误:

TypeError: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('O')

Any idea how I can overcome this? 知道如何克服这个问题吗?

you can do this: 你可以这样做:

import pandas as pd
from  dateutil import relativedelta
raw_data = {'Series_Date':
                ['2017-03-10','2017-03-13','2017-03-14','2017-03-15'],
            'SeriesDate':['2017-03-10','2017-03-13','2017-03-14','2017-03-15']}

df = pd.DataFrame(raw_data,columns=['Series_Date','SeriesDate'])
df['SeriesDate'] = pd.to_datetime(df['SeriesDate'])

move_days = (-10)
df['StartDate'] = (df['SeriesDate']
                   .apply(lambda x: 
                            x + relativedelta.relativedelta(days=move_days)))

movedays= (-3)
df['EndDate'] = (df['SeriesDate']
                 .apply(lambda x: 
                           x + relativedelta.relativedelta(days=move_days)))
print(df)

gives: 得到:

   Series_Date SeriesDate  StartDate    EndDate
0  2017-03-10   2017-03-10 2017-02-28 2017-02-28
1  2017-03-13   2017-03-13 2017-03-03 2017-03-03
2  2017-03-14   2017-03-14 2017-03-04 2017-03-04
3  2017-03-15   2017-03-15 2017-03-05 2017-03-05

to get date diff in days, 以天为单位获取日期差异,

df['DateDiff'] = (df['EndDate'] - df['StartDate'])
df['DateDiffDays'] = df['DateDiff'].dt.days
print(df)

gives

   Series_Date SeriesDate  StartDate    EndDate  DateDiff  DateDiffDays
0  2017-03-10  2017-03-10 2017-02-28 2017-03-07    7 days             7
1  2017-03-13  2017-03-13 2017-03-03 2017-03-10    7 days             7
2  2017-03-14  2017-03-14 2017-03-04 2017-03-11    7 days             7
3  2017-03-15  2017-03-15 2017-03-05 2017-03-12    7 days             7  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM