gpt4 book ai didi

python - 多索引数据框删除每组最大值的行

转载 作者:行者123 更新时间:2023-12-02 16:20:42 25 4
gpt4 key购买 nike

我有一个像这样的多索引数据框:

PID    Fid    x      y

A 1 2 3
2 6 1
3 4 6
B 1 3 5
2 2 4
3 5 7

我想删除每位患者 x 值 (PID) 最高的行。我需要获得一个包含剩余行和所有列的新数据框,以继续对这些数据进行分析,例如剩余 y 值的平均值。数据框应如下所示:

PID    Fid    x      y

A 1 2 3
3 4 6
B 1 3 5
2 2 4

我使用了 Python Multiindex Dataframe remove maximum 中的代码

idx = (df.reset_index('Fid')
.groupby('PID')['x']
.max()
.reset_index()
.values.tolist())
df_s = df.loc[df.index.difference(idx)]

我可以获得 idx,但不能将它们从数据框中删除。它说 TypeError: unhashable type: 'list'

我做错了什么?

最佳答案

你可以试试这个:

idx = df.groupby(level=0)['x'].idxmax()
df[~df.index.isin(idx)]

x y
PID Fid
A 1 2 3
3 4 6
B 1 3 5
2 2 4

或者

您可以在此处使用pd.Index.difference

df.loc[df.index.difference(df['x'].groupby(level=0).idxmax())] #Use level=0 if index is unnamed
#('PID').idxmax())]
x y
PID Fid
A 1 2 3
3 4 6
B 1 3 5
2 2 4

关于python - 多索引数据框删除每组最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65560546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com