我有一个数据集结构如下:
index country city Data
0 AU Sydney 23
1 AU Sydney 45
2 AU Unknown 2
3 CA Toronto 56
4 CA Toronto 2
5 CA Ottawa 1
6 CA Unknown 2
我想用每个国家/地区城市出现的模式替换城市列中的“未知”。结果将是:
...
2 AU Sydney 2
...
6 CA Toronto 2
我可以通过以下方式获取城市模式:
city_modes = df.groupby('country')['city'].apply(lambda x: x.mode().iloc[0])
我可以将值替换为:
df['column']=df.column.replace('Unknown', 'something')
但我无法弄清楚如何将这些结合起来,仅根据城市的发生模式来替换每个国家的未知数。
有任何想法吗?
Use transform http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy.transform.html for Series
与原始尺寸相同DataFrame
并通过设置新值numpy.where https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html:
city_modes = df.groupby('country')['city'].transform(lambda x: x.mode().iloc[0])
df['column'] = np.where(df['column'] == 'Unknown',city_modes, df['column'])
Or:
df.loc[df['column'] == 'Unknown', 'column'] = city_modes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)