我有一个 Dataframe ,其中包含'id','x1'列。我想用'x1'中最常见的值替换'x1'中缺失的值,以对应'id'。
例如,'x1'中存在缺失值,而'id' = 1。缺失值替换应为'e',因为'e'是'id' = 1的频繁/模式(3次)值。
df = pd.DataFrame({'id': [1, 1, 2, 3, 1, 1, 1, 1, 4, 5],
'x1': ['a', np.nan, 'b', 'c', 'e', 'e', 'e', 'f', 'g', 'h']})
我的方法是首先获取丢失记录的id。
df[df['x1'].isnull()==True]['id'].iloc[0]
然后使用value_counts
从'x1'获取最频繁的值,其中'id' .isin
在上面的输出中可用。
但是,这看起来在计算上是昂贵的,并且正在寻找有效的解决方案。
1条答案
按热度按时间4urapxun1#
您可以创建一个字典,将列id中的每个值Map到它最常见的x1值。
然后使用字典将idMap到缺少x1的最频繁的x1值: