gpt4 book ai didi

python - python 列表中每个月的工作日

转载 作者:行者123 更新时间:2023-12-02 09:57:04 24 4
gpt4 key购买 nike

这里是Python新手。我正在尝试创建一个 df,其中 1 列是月份“YYYY-MM”,我在下面的字典中创建了该月份(将不胜感激有关使用代码生成此内容的提示)。我试图使用 Month_list 填充工作日列。

import pandas as pd
df = pd.DataFrame({'month_list':['2019-01', '2019-02', '2019-03', '2019-04']})
df['weekdays'] = ''

我尝试了这段代码,但这仅适用于第一行。 (我明白为什么会这样,我只是不知道正确完成每一行的最佳方法)

df.weekdays = np.busday_count(month_list[0], month_list[0+1])
df

最佳答案

通过 Series.dt.strftime 将值转换为日期时间和字符串,然后添加一个月并传递给 np.busday_count:

df = pd.DataFrame({'month_list':['2019-01', '2019-02', '2019-03', '2019-04']})

month_list = pd.to_datetime(df['month_list'])
a = month_list.dt.strftime('%Y-%m-%d')
b = (month_list + pd.offsets.DateOffset(months=1)).dt.strftime('%Y-%m-%d')

df['weekdays'] = np.busday_count(a, b)

print (df)
month_list weekdays
0 2019-01 23
1 2019-02 20
2 2019-03 21
3 2019-04 22

只有 numpy 解决方案:

month_list = pd.to_datetime(df['month_list'])

a = month_list.to_numpy().astype('datetime64[M]')
b = a + np.array([1], dtype='timedelta64[M]')

df['weekdays'] = np.busday_count(a, b)
print (df)
month_list weekdays
0 2019-01 23
1 2019-02 20
2 2019-03 21
3 2019-04 22

关于python - python 列表中每个月的工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62064117/

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