0

我有一个数据框(df):

    year  month ETP
0   2021    1   49.21
1   2021    2   34.20
2   2021    3   31.27
3   2021    4   29.18
4   2021    5   33.25
5   2021    6   24.70

我想添加一个列,为我提供每行的工作日数,不包括节假日和周末(对于特定国家,exp:法国或美国)

所以输出将是:

    year  month ETP     work_day
0   2021    1   49.21      20
1   2021    2   34.20      20
2   2021    3   31.27      21
3   2021    4   29.18      19
4   2021    5   33.25      20
5   2021    6   24.70      19

代码 :

import numpy as np
import pandas as pd
days = np.busday_count( '2021-01', '2021-06' ) 
df.insert(3, "work_day", [days]) 

我得到了这个错误:

ValueError: Length of values does not match length of index

有什么建议么?

谢谢您的帮助

4

1 回答 1

1

假设您是输入工作日的人,我想您可以这样做:

data = {'year': [2020, 2020, 2021, 2023, 2022], 
        'month': [1, 2, 3, 4, 6]} 
 
df = pd.DataFrame(data)
 
df.insert(2, "work_day", [20,20,23,21,22]) 

其中2是新列的位置,而不仅仅是在末尾,work_day是名称,并且列表包含每一行的值。

编辑:使用 NumPy

import numpy as np
import pandas as pd

days = np.busday_count( '2021-02', '2021-03' )
data = {'year': [2021], 
        'month': ['february']} 
 
df = pd.DataFrame(data)
 
df.insert(2, "work_day", [days]) 

随着busday_count您指定要查看工作日的开始和结束日期。结果:

   year     month  work_day
0  2021  february  20
于 2021-02-17T08:25:14.697 回答