获取行中每个值的最常见值 - pandas df
Get most common value for each value in row - pandas df
这可能是重复的,请告诉我。
我有一个 pandas df 是这样的:
id
name
Common
One
A
One
A
One
A
One
B
Two
C
我想输出这样的东西:
每个 ID 最常用的名称放在常用列中。
id
name
Common
One
A
A
One
A
A
One
A
A
One
B
A
Two
C
C
我试过了,但此时我在黑暗中投掷飞镖
df.groupby(['id', 'name']).agg(lambda x:x.value_counts().index[0])
这个有效:
df['Common'] = df.groupby('id')['name'].transform(lambda x: x.mode()[0])
输出:
>>> df
id name Common
0 One A A
1 One A A
2 One A A
3 One B A
4 Two C C
一个更长(可能更慢)的过程是旋转和映射:
df.assign(Common = df.id.map(df.pivot(None, 'id', 'name').mode().T.squeeze()))
id name Common
0 One A A
1 One A A
2 One A A
3 One B A
4 Two C C
这可能是重复的,请告诉我。
我有一个 pandas df 是这样的:
id | name | Common |
---|---|---|
One | A | |
One | A | |
One | A | |
One | B | |
Two | C |
我想输出这样的东西:
每个 ID 最常用的名称放在常用列中。
id | name | Common |
---|---|---|
One | A | A |
One | A | A |
One | A | A |
One | B | A |
Two | C | C |
我试过了,但此时我在黑暗中投掷飞镖
df.groupby(['id', 'name']).agg(lambda x:x.value_counts().index[0])
这个有效:
df['Common'] = df.groupby('id')['name'].transform(lambda x: x.mode()[0])
输出:
>>> df
id name Common
0 One A A
1 One A A
2 One A A
3 One B A
4 Two C C
一个更长(可能更慢)的过程是旋转和映射:
df.assign(Common = df.id.map(df.pivot(None, 'id', 'name').mode().T.squeeze()))
id name Common
0 One A A
1 One A A
2 One A A
3 One B A
4 Two C C