如何根据熊猫中组合的最高出现次数填写值?

我有一个巨大的 df 看起来像这样 -


...   ||    City     ||  Country

           Newyork        USA

           Newyork        USA

           Newyork        USA

           Newyork        **unknown**

           delhi          india

           delhi          **unknown**

           delhi          india

现在,我想根据已匹配的城市用正确的国家/地区填充未知数。例如,大多数带有 newyork 的行在 country 列中都是 USA。


我的想法是按国家/地区分组并将其转换为字典以进行映射,但这种方法失败了。


这是一个类似的问题,但解决方案是在 R 中: 根据发生概率填充缺失值


BIG阳
浏览 169回答 2
2回答

PIPIONE

您可以使用每个组的value_counts第一个索引或第一个值:modereplacedef f(x):    #remove '**unknown**' rows and get top1 value    return x.replace('**unknown**', x[x.ne('**unknown**')].value_counts().index[0])    #return x.replace('**unknown**', x[x.ne('**unknown**')].mode().iat[0])df['Country'] = df.groupby('City')['Country'].apply(f)print (df)      City Country0  Newyork     USA1  Newyork     USA2  Newyork     USA3  Newyork     USA4    delhi   india5    delhi   india6    delhi   india另一种解决方案是替换**unknown**缺失值,获取最高值和fillna:df['Country'] = df['Country'].replace('**unknown**', np.nan)s = df.groupby('City')['Country'].transform(lambda x: x.value_counts().index[0])#alternative#s = df.groupby('City')['Country'].transform(lambda x: x.mode().iat[0])df['Country'] = df['Country'].fillna(s)print (df)      City Country0  Newyork     USA1  Newyork     USA2  Newyork     USA3  Newyork     USA4    delhi   india5    delhi   india6    delhi   india
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python