熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]
Posted
技术标签:
【中文标题】熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]【英文标题】:pandas dataframe: extract data with specific crtieria/conditions minimum in a column fixing other columns [duplicate] 【发布时间】:2022-01-22 20:57:40 【问题描述】:首先非常感谢您的帮助。 我有一个表,我用 pandas 作为 df 导入。对于每个唯一的 foo&bar,我想获得一个新的 df,其中最小的 zoo 和相应的 qux。我试图简化我的数据框,但实际上我有数百个 qux 和 foo 以及几十个 bar。
我的输入表:
foo | bar | zoo | qux |
---|---|---|---|
aaa | HB1 | 9.75 | lab1 |
aaa | HB1 | 4.87 | lab2 |
aaa | HB1 | 3.05 | lab3 |
aaa | TS3 | 8.51 | lab1 |
aaa | TS3 | 2.58 | lab2 |
aaa | TS3 | 2.48 | lab3 |
bbb | HB1 | 9.03 | lab1 |
bbb | HB1 | 6.11 | lab2 |
bbb | HB1 | 7.66 | lab3 |
bbb | TS3 | 3.57 | lab1 |
bbb | TS3 | 4.25 | lab2 |
bbb | TS3 | 1.63 | lab3 |
我的预期结果
foo | bar | zoo | qux |
---|---|---|---|
aaa | HB1 | 3.05 | lab3 |
aaa | TS3 | 2.48 | lab3 |
bbb | HB1 | 6.11 | lab2 |
bbb | TS3 | 1.63 | lab3 |
我尝试使用 groupby 或 pivot_table,我获得了每个 bar 和每个 foo 的 min zoo 但我没有获得相应的 qux 并且 df 被完全重塑,看起来不像我的第一个格式。我有点失落。
非常感谢您的帮助。
【问题讨论】:
试试这个:df[df['zoo'].isin(df.groupby(['foo','bar'])['zoo'].min().values)]
【参考方案1】:
通过groupby获取最小值的索引位置,索引原始df获取行数:
df.loc[df.groupby(['foo', 'bar']).zoo.idxmin()]
foo bar zoo qux
2 aaa HB1 3.05 lab3
5 aaa TS3 2.48 lab3
7 bbb HB1 6.11 lab2
11 bbb TS3 1.63 lab3
【讨论】:
太棒了……!!!多谢。我忽略了 idxmin()。嗯,我今天学到了一些新东西。谢谢 Sammywemmy!【参考方案2】:您可以按descending
的顺序对数据框中的值进行排序并使用groupby.tail(1)
:
df.sort_values(by=['foo','bar','zoo','qux'],ascending=False).groupby(['foo','bar']).tail(1)
foo bar zoo qux
2 aaa HB1 3.05 lab3
5 aaa TS3 2.48 lab3
8 bbb HB1 7.66 lab3
11 bbb TS3 1.63 lab3
【讨论】:
太棒了..!很好的解决方案,非常感谢 sophocles !以上是关于熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章