【问题标题】:replace values by the mean用平均值替换值
【发布时间】:2023-03-08 23:39:01
【问题描述】:

我有一个如下的数据框:

         Col1        Price
1      Plastic        50
2        Metal        100
3      Plastic        40

我想用它们在价格中的方式替换 Col1 中的值,所以我得到:

         Col1       Price
1         45         50
2        100        100
3         45         40

我已经做过了:

df.groupby('Col1').mean()['Price']

但我不知道如何替换值,也许使用 map ?

【问题讨论】:

    标签: python pandas numpy dataframe pandas-groupby


    【解决方案1】:

    你是对的 - map 可以用来这样做:

    df['Col1'] = df['Col1'].map(df.groupby('Col1')['Price'].mean())
    df
       Col1  Price
    1    45     50
    2   100    100
    3    45     40
    

    【讨论】:

    • 我喜欢你的回答! :) +1
    • @ScottBoston 正如他们所说的 1000 种剥猫皮的方法! ;)
    【解决方案2】:
    df.assign(Col1=df.Col1.map(df.groupby('Col1').mean().squeeze()))
    

    输出:

       Col1  Price
    1    45     50
    2   100    100
    3    45     40
    

    【讨论】:

      【解决方案3】:

      如果你想直接得到结果,可以使用transform

      df['Col1']=df.groupby(['Col1'])['Price'].transform('mean')
      
      
         Col1  Price
      0    45     50
      1   100    100
      2    45     40
      

      【讨论】:

        猜你喜欢
        • 2013-04-01
        • 2019-03-21
        • 2018-02-05
        • 2012-05-03
        • 2018-12-27
        • 1970-01-01
        • 2020-12-08
        • 1970-01-01
        相关资源
        最近更新 更多