【问题标题】:How to get the mean value for same date of week in python如何在python中获取同一周日期的平均值
【发布时间】:2022-01-25 04:04:30
【问题描述】:

我有一个数据集如下,(数据行比下面提到的多)

        Date                 Calls
0   2022-01-02, Sunday      482920
1   2022-01-01, Saturday    482920
2   2021-12-31, Friday      482920
3   2021-12-30, Thursday    482920
4   2021-12-29, Wednesday   519995
5   2021-12-28, Tuesday     482920
6   2021-12-27, Monday      519995
7   2021-12-26, Sunday      522273
8   2021-12-25, Saturday    508439
9   2021-12-24, Friday      456587
10  2021-12-23, Thursday    482920
11  2021-12-22, Wednesday   519995
12  2021-12-21, Tuesday     522273
13  2021-12-20, Monday      508439
14  2021-12-19, Sunday      456587

我需要获取数据集中提到的每个相同日期的平均值。例如,我需要获取所有“星期天”的通话平均值。所以我需要另一列平均调用次数,如下所示。

Date                    Calls     Avgerage_Calls
0   2022-01-02, Sunday      482920         487260.0
1   2022-01-01, Saturday    482920         495679.5
2   2021-12-31, Friday      482920         469753.5
3   2021-12-30, Thursday    482920         482920.0
4   2021-12-29, Wednesday   519995         519995.0
5   2021-12-28, Tuesday     482920         469753.5
6   2021-12-27, Monday      519995         469753.5
7   2021-12-26, Sunday      522273         487260.0
8   2021-12-25, Saturday    508439         495679.5
9   2021-12-24, Friday      456587         469753.5
10  2021-12-23, Thursday    482920         482920.0
11  2021-12-22, Wednesday   519995         519995.0
12  2021-12-21, Tuesday     522273         469753.5
13  2021-12-20, Monday      508439         469753.5
14  2021-12-19, Sunday      456587         487260.0

所以到目前为止,我已经使用这些步骤来实现这一目标。

df_new = df[df['Date'].str.contains('Sunday', regex=False, case=False, na=False)]
x=df_new["Calls"].mean()
x

它提供同一日期的平均值。但是可能有一些直接的方法可以在没有不同数据帧的情况下获得所有这些平均值。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python dataframe


    【解决方案1】:

    这是一个解决方案:

    df = pd.DataFrame({'Date': ['2022-01-02, Sunday', '2022-01-01, Saturday', '2021-12-31, Friday', '2021-12-30, Thursday', '2021-12-29, Wednesday', 
                            '2021-12-28, Tuesday', '2021-12-27, Monday', '2021-12-26, Sunday','2021-12-25, Saturday','2021-12-24, Friday','2021-12-23, Thursday',
                            '2021-12-22, Wednesday','2021-12-21, Tuesday','2021-12-20, Monday','2021-12-19, Sunday'], 
                   'Calls': [482920,482920,482920,482920,519995,482920,519995,522273,508439,456587,482920,519995,522273,508439,456587]})
    
    df['day'] = df['Date'].apply(lambda x : x.split(',')[1].strip())
    df['Avgerage_Calls'] = df.groupby(df['day'])['Calls'].transform('mean')
    df.drop(columns=['day'],inplace = True)
    

    输出:

               Date           Calls    Avgerage_Calls
    0   2022-01-02, Sunday    482920    487260.0
    1   2022-01-01, Saturday  482920    495679.5
    2   2021-12-31, Friday    482920    469753.5
    3   2021-12-30, Thursday  482920    482920.0
    4   2021-12-29, Wednesday 519995    519995.0
    5   2021-12-28, Tuesday   482920    502596.5
    6   2021-12-27, Monday    519995    514217.0
    7   2021-12-26, Sunday    522273    487260.0
    8   2021-12-25, Saturday  508439    495679.5
    9   2021-12-24, Friday    456587    469753.5
    10  2021-12-23, Thursday  482920    482920.0
    11  2021-12-22, Wednesday 519995    519995.0
    12  2021-12-21, Tuesday   522273    502596.5
    13  2021-12-20, Monday    508439    514217.0
    14  2021-12-19, Sunday    456587    487260.0
    

    我创建了一个包含日期的新列day,然后我计算了每天的平均值(使用 groupby)。 str.split(',') 用于分割日期。例如,如果s= '2021-12-20, Monday's.split(',') 给出['2021-12-20', ' Monday']。 str.strip() 用于删除空格。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 非常感谢。有效。现在我不需要遍历许多数据帧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多