gpt4 book ai didi

python - AttributeError: 'Series' 对象没有属性 'isoweekday'

转载 作者:行者123 更新时间:2023-12-01 06:44:40 25 4
gpt4 key购买 nike

我编写了一个函数,将日期相对于周末和节假日移动指定的工作日数。当我将它与标量值一起使用时它工作正常,但是我在尝试在 pandas DataFrame 上使用时遇到问题。该函数本身如下所示:

def move_date_by_days(init_date, roll=1, nwd_key=None, hol_key=None):
'''
moves date by n-number of working days forward or backward
init_date: date, initial caluclation date
roll: integer, number of days to move forward (+) or backward (-)
nwd_key: string that stands for currency iso code, it is a key in non_working_days dictionary
hol_key: string that stands for currency iso code, it is a key in holidays dictonary
return: date
'''
nwd = non_working_days.get(nwd_key, [])
hol = holidays.get(hol_key,[])
moved_date = init_date + datetime.timedelta(days=roll)
if (moved_date.isoweekday() in nwd) or (moved_date in hol):
if roll >= 0:
moved_date=move_date_by_days(init_date + datetime.timedelta(days=1), roll=roll, nwd_key=nwd_key, hol_key=hol_key)
else:
moved_date=move_date_by_days(init_date + datetime.timedelta(days=-1), roll=roll, nwd_key=nwd_key, hol_key=hol_key)
return moved_date

现在,我有 DataFrame“df”,其中包含“start_date”和“end_date”列

   start_date    end_date
0 2020-01-31 2020-04-30
1 2020-04-30 2020-07-31
2 2020-07-31 2020-10-31
3 2020-10-31 2020-11-28

我想创建名为“fixing”的第三列,该列将在“start_date”之前 2 个工作日。我正在尝试这个:

dates_table['fixing'] = move_date_by_days(self.dates_table['start_date'], -2, self.ccy, self.ccy)

但它返回AttributeError:'Series'对象没有属性'isoweekday'

请注意,例如,当我引用 DataFrame 的标量数据时,该函数工作正常

d1 = s1.dates_table.iat[0,0]
move_date_by_days(d1, -2, 'pln', 'pln')

它返回了我所期望的:datetime.date(2020, 1, 29)

请提示我如何在数据框的整列上使用该函数?

最佳答案

IIUC,为什么不使用 offsets.BDayoffsets.CustomBusinessDay它需要一个假期列表:

df['fixing'] = df['start_date'] - pd.offsets.BDay(2)
df['fixing'] = df['start_date'] - pd.offsets.CustomBusinessDay(2, holidays=holidays['pln'])

[输出]

  start_date   end_date     fixing
0 2020-01-31 2020-04-30 2020-01-29
1 2020-04-30 2020-07-31 2020-04-28
2 2020-07-31 2020-10-31 2020-07-29
3 2020-10-31 2020-11-28 2020-10-29

关于python - AttributeError: 'Series' 对象没有属性 'isoweekday',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59287872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com