gpt4 book ai didi

python - 在两个值之间进行选择并设置 pandas 数据框中最常见的值

转载 作者:行者123 更新时间:2023-11-30 22:29:52 24 4
gpt4 key购买 nike

我问过 question最近,但现在我有一个新问题。这是我的数据框:

df = pd.DataFrame({'id':[1,1,1,1,2,2,2,3,3,3,4,4],
'sex': [0,0,0,1,0,0,0,1,1,0,1,1]})

id sex
0 1 0
1 1 0
2 1 0
3 1 1
4 2 0
5 2 0
6 2 0
7 3 1
8 3 1
9 3 0
10 4 1
11 4 1

现在我需要为具有混合性别值的 ID 设置性别值。它应该是最常见的值。所以我想要得到这样的东西:

    id  sex
0 1 0
1 1 0
2 1 0
3 1 0
4 2 0
5 2 0
6 2 0
7 3 1
8 3 1
9 3 1
10 4 1
11 4 1

之后我只想得到一对 ID - 性别:

id  sex
0 1 0
1 2 0
2 3 1
3 4 1

最佳答案

您也可以使用np.bincount

In [179]: df.groupby('id')['sex'].apply(lambda x: np.argmax(np.bincount(x))).reset_index()
Out[179]:
id sex
0 1 0
1 2 0
2 3 1
3 4 1

时间

In [194]: df = pd.concat([df]*1000, ignore_index=True)

In [195]: df.shape
Out[195]: (12000, 2)

In [196]: %timeit df.groupby('id')['sex'].apply(lambda x: np.argmax(np.bincount(x))).reset_index()
100 loops, best of 3: 2.48 ms per loop

In [197]: %timeit df.groupby('id')['sex'].apply(lambda x: x.value_counts().index[0]).reset_index()
100 loops, best of 3: 4.55 ms per loop

In [198]: %timeit df.set_index('id').groupby(level=0).sex.apply(lambda x: x.value_counts().idxmax()).reset_index()
100 loops, best of 3: 6.71 ms per loop

关于python - 在两个值之间进行选择并设置 pandas 数据框中最常见的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46217537/

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