【问题标题】:How to get mean of the values of one column based on the similarity of the corresponds values in another columns如何根据另一列中对应值的相似性获取一列值的平均值
【发布时间】:2019-05-23 08:08:15
【问题描述】:

如果有人告诉我如何完成下面的任务,我将不胜感激。假设我在 python 中有一个数据框如下:

  col1 col2 col3 col4
0    A 2001    2    5
1    A 2001    2    4
2    A 2001    3    6
3    A 2002    4    5
4    B 2001    2    9
5    B 2001    2    4
6    B 2001    2    3
7    B 2001    3   95

如果 col1、col2 和 col3 中的对应值相同,我想获取 col4 的平均值,然后删除前 3 列中具有重复值的行。例如,第一列两列的 col1, col2, col3 的值相同,因此,我们要消除其中一个,并将 col4 的值更新为 5 和 4 的平均值。结果应该是:

  col1 col2 col3 col4
0    A 2001    2 4.55
1    A 2001    3    6
2    A 2002    4    5
3    B 2001    2 5.33
4    B 2001    3   95

【问题讨论】:

    标签: python pandas dataframe mean


    【解决方案1】:

    使用groupby'col1''col2''col3' 分组,然后得到'col4' 列的平均值:

    print(df.groupby(['col1','col2','col3'],as_index=False)['col4'].mean())
    

    输出:

      col1  col2  col3       col4
    0    A  2001     2   4.500000
    1    A  2001     3   6.000000
    2    A  2002     4   5.000000
    3    B  2001     2   5.333333
    4    B  2001     3  95.000000
    

    【讨论】:

    • 非常感谢您的回复。现在,如果我们有 col5 并且我们想对 col4 和 col5 做同样的事情。我们怎么能同时完成这样的任务?
    • @user2356563 也许:print(df.groupby(['col1','col2','col3'],as_index=False)[['col4','col5']].mean())
    • 再次感谢,它有效。我的最后一个问题是:如果我们有 col1、col2、col3、col4 并且我们的意思是仅 col3 上的 groupby。现在,我们如何保留所有行以及 col4?
    • @user2356563 你的意思是:print(df.groupby(['col1','col2','col4'],as_index=False)['col3'].mean())
    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2013-05-26
    • 2020-10-27
    • 1970-01-01
    • 2022-08-21
    相关资源
    最近更新 更多