【问题标题】:Keep the value corresponding to the maximum of another column in a dataframe保持与数据框中另一列的最大值相对应的值
【发布时间】:2021-06-29 08:51:28
【问题描述】:

我有一个数据框

    day  type  price
0  10900     2    300
1  10900     1    500
2  10900     3    200
3  10901     5    100
4  10901     2    400
5  10901     1    300
6  10902     2    100
7  10902     3    300
8  10902     1    200
9  10902     4    400

并且我希望每天保持最高类型的价格并复制当天的所有价格,因此结果将是:

 day  type  price
0  10900     2    200
1  10900     1    200
2  10900     3    200
3  10901     5    100
4  10901     2    100
5  10901     1    100
6  10902     2    400
7  10902     3    400
8  10902     1    400
9  10902     4    400

所以这就是我正在做的事情,我想知道这是否是最好的方式,或者是否有办法不使用合并并以另一种方式进行分组:

tmp_df=df[df.groupby('day')['type'].transform('max') == df['type']].reset_index()
df=df[['day','type']].merge(tmp_df[['day','price']],on='day')

【问题讨论】:

    标签: python pandas dataframe group-by


    【解决方案1】:
    df["price"] = df.groupby("day", as_index=False)["price"].transform(
        lambda x: df.loc[df.loc[x.index, "type"].idxmax(), "price"]
    )
    print(df)
    

    打印:

         day  type  price
    0  10900     2    200
    1  10900     1    200
    2  10900     3    200
    3  10901     5    100
    4  10901     2    100
    5  10901     1    100
    6  10902     2    400
    7  10902     3    400
    8  10902     1    400
    9  10902     4    400
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多