熊猫根据城市填充缺失的国家/地区值(如果存在)



如果根据存在的城市和国家/地区名称为 null,我正在尝试在我的数据框中填充国家/地区名称。例如,请参阅下面的数据框,如果数据框中存在这样的城市,我想将班加罗尔城市的 NaN 替换为印度国家

df1=
         City Country
0   Bangalore   India
1       Delhi   India
2      London      UK
3  California     USA
4       Dubai     UAE
5   Abu Dhabi     UAE
6   Bangalore     NaN

我是新手,所以任何帮助将不胜感激:)。

您可以在删除空值和重复项后创建序列映射。

然后将fillnapd.Series.map一起使用:

g = df.dropna(subset=['Country']).drop_duplicates('City').set_index('City')['Country']
df['Country'] = df['Country'].fillna(df['City'].map(g))
print(df)
         City Country
0   Bangalore   India
1       Delhi   India
2      London      UK
3  California     USA
4       Dubai     UAE
5    AbuDhabi     UAE
6   Bangalore   India

如果NaN首先发生在组中,则此解决方案也将有效。

我相信

df1.groupby('City')['Country'].fillna(method='ffill')

应该通过转发填充组内的缺失值来解决您的问题。

其中一种方法可能是 -

non_null_cities = df1.dropna((.drop_duplicates(['City'](.rename(columns={'Country':'C'}( df1 = df1.merge(non_null_cities, on='City', how='left'(

df1.loc[df1['Country'].isnull((, 'Country'] = df1['C']
del df1['C']

希望这会有所帮助!

这是一种令人讨厌的方法。

首先使用正向填充,然后使用反向填充(对于可能的NaN首先出现(

df = df.groupby('City')[['City','Country']].fillna(method = 'ffill').groupby('City')[['City','Country']].fillna(method = 'bfill')

相关内容

最新更新