我有以下数据集:
d = {'id': [1,1,1,1,3,3,3,4,4,4], 'number': [3,3,3,1,4,6,4,5,5,3]}
df = pd.DataFrame(data=d)
我希望获得一个包含“id”和“final_number”列的新数据框,其中每个id都分配给上表中每个id组中最“流行”的数字。我该怎么办?
结果应为:
答案 0 :(得分:4)
最“热门”的数字应为mode
df.groupby('id').number.apply(lambda x : x.mode()[0]).reset_index()
Out[1499]:
id number
0 1 3
1 3 4
2 4 5
答案 1 :(得分:2)
使用groupby
+ value_counts
+ head
-
df.groupby('id')\
.number.value_counts()\
.groupby(level=0)\
.head(1)\
.reset_index(name='count')\
.drop('count', 1)
id number
0 1 3
1 3 4
2 4 5