[英]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.