【发布时间】:2022-01-15 13:27:37
【问题描述】:
我想创建一个函数,将天数作为日期和日期之间的整数来计算(例如 df['new_col'] = (df['date'].shift(#periods) -df['date']). 日期变量是 datetime64[D]。 例如:df['report_date'].shift(39) = '2008-09-26' and df['report_date'] = '2008-08-18' and df['delta'] = 39.
import pandas as pd
from datetime import datetime
from datetime import timedelta
import datetime as dt
dates =pd.Series(np.tile(['2012-08-01','2012-08-15','2012-09-01','2012-08-15'],4)).astype('datetime64[D]')
dates2 =pd.Series(np.tile(['2012-08-01','2012-09-01','2012-10-01','2012-11-01'],4)).astype('datetime64[D]')
stocks = ['A','A','A','A','G','G','G','G','B','B','B','B','F','F','F','F']
stocks = pd.Series(stocks)
df = pd.DataFrame(dict(stocks = stocks, dates = dates,report_date = dates2)).reset_index()
df.head()
print('df info:',df.info())
下面的代码是我最近尝试创建这个变量,但代码产生的结果不正确。
df['delta'] = df.groupby(['stocks','dates'])['report_date'].transform(lambda x: (x.shift(1).rsub(x).dt.days))
【问题讨论】:
-
您的问题不清楚。你能用预期的输出更新你的帖子吗?
-
df.groupby(['stocks'])['report_date'].transform(lambda x: (x.shift(1).rsub(x).dt.days))?