gpt4 book ai didi

python - 如何根据 Pandas 中出现次数最多的组合填写值?

转载 作者:行者123 更新时间:2023-11-28 22:13:47 25 4
gpt4 key购买 nike

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

...   ||    City     ||  Country
Newyork USA
Newyork USA
Newyork USA
Newyork **unknown**
delhi india
delhi **unknown**
delhi india

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

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

Here's a simillar question asked but the solution is in R: Fill missing value based on probability of occurrence

最佳答案

您可以使用 value_counts第一个索引或第一个值为 mode每组 replace:

def 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 Country
0 Newyork USA
1 Newyork USA
2 Newyork USA
3 Newyork USA
4 delhi india
5 delhi india
6 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 Country
0 Newyork USA
1 Newyork USA
2 Newyork USA
3 Newyork USA
4 delhi india
5 delhi india
6 delhi india

关于python - 如何根据 Pandas 中出现次数最多的组合填写值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53701285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com