在具有微分的组中找到最大值
Posted
技术标签:
【中文标题】在具有微分的组中找到最大值【英文标题】: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 |
【问题讨论】:
【参考方案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_1
和value_2
(没有0 值)的平均值?
@Horst-Jackson - 你觉得df = df.set_index('ID').replace(0, np.nan).mean(level=0)
吗?
谢谢,正是我正在寻找的!以上是关于在具有微分的组中找到最大值的主要内容,如果未能解决你的问题,请参考以下文章