【问题标题】:Finding the maximum value in a group with differentiation在具有微分的组中找到最大值
【发布时间】:2021-07-16 08:50:48
【问题描述】:

我有一个看起来像这样的 Pandas DataFrame:

index ID value_1 value_2
0 1 200 126
1 1 200 127
2 1 200 128.1
3 1 200 125.7
4 2 300.1 85
5 2 289.4 0
6 2 0 76.9
7 2 199.7 0

我的目标是找到每个ID-group(在本例中为 1,2)中的所有行,这些行具有 value_1 列的最大值。第二个条件是如果每组有多个最大值,则取value_2列中的最大值所在的行。

所以目标表应该是这样的:

index ID value_1 value_2
0 1 200 128.1
1 2 300.1 85

【问题讨论】:

    标签: python pandas max pandas-groupby


    【解决方案1】:

    在所有 3 列中使用 DataFrame.sort_values,然后使用 DataFrame.drop_duplicates

    df1 = (df.sort_values(['ID', 'value_1', 'value_2'], ascending=[True, False, False])
             .drop_duplicates('ID'))
    print (df1)
       ID  value_1  value_2
    2   1    200.0    128.1
    4   2    300.1     85.0
    

    【讨论】:

    • 我还有一个问题:是否有可能在ID-group 中计算value_1value_2(没有0 值)的平均值?
    • @Horst-Jackson - 你觉得df = df.set_index('ID').replace(0, np.nan).mean(level=0) 吗?
    • 谢谢,正是我正在寻找的!
    猜你喜欢
    • 2021-05-24
    • 2017-04-20
    • 1970-01-01
    • 2013-10-24
    • 2021-05-23
    • 2016-05-05
    • 2011-01-03
    • 2015-11-01
    • 2016-05-11
    相关资源
    最近更新 更多