gpt4 book ai didi

python - 如何用最常见的值替换 pandas 列的值

转载 作者:行者123 更新时间:2023-12-01 00:46:07 25 4
gpt4 key购买 nike

我已经使用了不同的答案,但没有一个能解决我的问题。我还看了this回答。但它也不起作用。这是我的数据框:

import numpy as np
import pandas as pd

np.random.seed(2)
col1 = np.random.choice([1,2,3], size=(50))
col2 = np.random.choice([1,2,3,4], size=(50))
col3 = np.random.choice(['a', 'b', 'c', 'd', 'e'], size=(50))
data = {'col1':col1, 'col2':col2, 'col3':col3}
df = pd.DataFrame(data)

我想要

1) 执行groupbyc1c2列和

2) 创建一个新列,该列是 c3 上最常见的值柱子。

最终的 df 应如下所示:

    c1  c2  c3  c4
0 1 1 b b
1 1 1 b b
2 1 2 a b
3 1 2 b b
4 1 2 b b
5 1 2 b b
6 1 2 c b
7 1 3 a a
8 1 3 c a
9 1 3 b a
10 1 3 c a
11 1 3 a a
12 1 3 b a
13 1 3 a a
14 1 3 a a
15 1 3 c a
16 1 4 a a
17 2 1 c c
18 2 1 c c
19 2 1 a c
20 2 1 c c
21 2 1 c c
22 2 1 b c
23 2 2 a a
24 2 2 c a
25 2 2 a a
26 2 3 a a
27 2 3 a a
28 2 4 c c
29 2 4 c c
30 3 1 b a
31 3 1 a a
32 3 1 a a
33 3 1 c a
34 3 1 b a
35 3 2 c c
36 3 2 c c
37 3 2 b c
38 3 2 a c
39 3 2 c c
40 3 3 b b
41 3 3 a b
42 3 3 b b
43 3 3 c b
44 3 3 a b
45 3 3 b b
46 3 3 b b
47 3 3 c b
48 3 4 b b
49 3 4 c c

例如,我使用此代码没有成功:

df1 = df.groupby(['c1', 'c2'])['c3'].agg(lambda x:x.value_counts().index[0])

最佳答案

.transform(pd.Series.mode) 不起作用的原因是当有两种模式时它返回一个列表。我们可以通过访问此列表中的第一个值来解决这个问题:

df['c4'] = df.groupby(['c1', 'c2'])['c3'].transform(lambda x: x.mode()[0])

或者

df['c4'] = df.groupby(['c1', 'c2'])['c3'].transform(lambda x: pd.Series.mode(x)[0])
    c1  c2 c3 c4
0 1 1 b b
1 1 1 b b
2 1 2 a b
3 1 2 b b
4 1 2 b b
5 1 2 b b
6 1 2 c b
7 1 3 a a
8 1 3 c a
9 1 3 b a
10 1 3 c a
11 1 3 a a
12 1 3 b a
13 1 3 a a
14 1 3 a a
15 1 3 c a
16 1 4 a a
17 2 1 c c
18 2 1 c c
19 2 1 a c
20 2 1 c c
21 2 1 c c
22 2 1 b c
23 2 2 a a
24 2 2 c a
25 2 2 a a
26 2 3 a a
27 2 3 a a
28 2 4 c c
29 2 4 c c
30 3 1 b a
31 3 1 a a
32 3 1 a a
33 3 1 c a
34 3 1 b a
35 3 2 c c
36 3 2 c c
37 3 2 b c
38 3 2 a c
39 3 2 c c
40 3 3 b b
41 3 3 a b
42 3 3 b b
43 3 3 c b
44 3 3 a b
45 3 3 b b
46 3 3 b b
47 3 3 c b
48 3 4 b b
49 3 4 c b

关于python - 如何用最常见的值替换 pandas 列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56960264/

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