熊猫:根据人口分配数量

时间:2017-12-27 18:13:21

标签: python pandas

我有以下数据集:

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)

enter image description here

我希望获得一个包含“id”和“final_number”列的新数据框,其中每个id都分配给上表中每个id组中最“流行”的数字。我该怎么办?

结果应为:

enter image description here

2 个答案:

答案 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