gpt4 book ai didi

python - pandas groupby - 返回满足条件的组中的第一行

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:54 24 4
gpt4 key购买 nike

鉴于下面的示例数据集,我想为每个 group 返回一行显示 obsnum第一行的 score小于 0.4。

import pandas as pd
import numpy as np

np.random.seed(42)

df = pd.DataFrame({'group': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c'],
'obsnum': [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4],
'score' : np.random.rand(12)})

数据框看起来像这样:

df
group obsnum score
0 a 1 0.374540
1 a 2 0.950714
2 a 3 0.731994
3 a 4 0.598658
4 b 1 0.156019
5 b 2 0.155995
6 b 3 0.058084
7 b 4 0.866176
8 c 1 0.601115
9 c 2 0.708073
10 c 3 0.020584
11 c 4 0.969910

返回的结果应该是这样的,存储在另一个dataframe中。

group   obsnum  score
a 1 0.374540
b 1 0.156019
c 3 0.020584

我试过这个df.groupby('group').apply(lambda x: x['score'] <= 0.4)还有这个df.groupby('group')['obsnum', 'score'].min()但我所追求的也不是。

最佳答案

你可以使用

df[df['score'].le(0.4)].groupby('group').first()

obsnum score
group
a 1 0.374540
b 1 0.156019
c 3 0.020584

关于python - pandas groupby - 返回满足条件的组中的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47832114/

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