【发布时间】:2020-07-16 01:48:08
【问题描述】:
有没有办法将 pandas 数据框中的日期字段增加另一列中指定的工作日数?
np.random.seed(10)
df = pd.DataFrame({'Date':pd.date_range(start=dt.datetime(2020,7,1), end = dt.datetime(2020,7,10))})
df['Offset'] = np.random.randint(0,10, len(df))
Date Offset
0 2020-07-01 9
1 2020-07-02 4
2 2020-07-03 0
3 2020-07-04 1
4 2020-07-05 9
5 2020-07-06 0
6 2020-07-07 1
7 2020-07-08 8
8 2020-07-09 9
9 2020-07-10 0
我希望这可以工作,但是它会抛出错误:
df['Date'] + pd.tseries.offsets.BusinessDay(n = df['Offset'])
TypeError:
n参数必须是整数,得到
pd.to_timedelta 不支持工作日。
【问题讨论】:
-
df['Offset']是一个序列而不是整数,您试图将一个值偏移整个序列,因此会出现错误。您可能想查看apply()并尝试在那里找到解决方案! -
对于大型 DataFrame,
.apply也可能非常慢。如果您有很多行并且只有少量唯一偏移量,则按偏移量进行分组会更有效:stackoverflow.com/questions/58174267/… 并将单个偏移量应用于每个组,然后组合结果。
标签: python-3.x pandas dataframe