我有一个数据集,其中包含列id
和列lang
。
>>> all_transcripts
id lang
1 nl
1 nl
1 fr
1 nl
2 en
2 nl
2 en
3 nl
3 nl
现在,我想创建一列actual_lang
,该列显示每个lang
中最常见的interactionId
。我想要的输出如下所示:
id lang actual_lang
1 nl nl
1 nl nl
1 fr nl
1 nl nl
2 en en
2 nl en
2 en en
3 nl nl
3 nl nl
我找到了Pandas: Find most common string per person,但是这里的返回值是基于两列的,并且输出是基于单个组项目的,而不是添加到数据集中。
谁知道该怎么做?
答案 0 :(得分:2)
将GroupBy.transform
与Series.mode
一起使用并选择第一个值:
df['actual_lang'] = df.groupby('id')['lang'].transform(lambda x: x.mode().iat[0])
print (df)
id lang actual_lang
0 1 nl nl
1 1 nl nl
2 1 fr nl
3 1 nl nl
4 2 en en
5 2 nl en
6 2 en en
7 3 nl nl
8 3 nl nl