将 pandas 数据框列映射到字典

2024-03-31

我有一个数据框的案例,其中包含高基数的分类变量(许多唯一值)。我想将该变量重新编码为一组值(最常见的值),并用一个包罗万象的类别(“其他”)替换所有其他值。举一个简单的例子:

以下是应保持不变的两个值:

top_values = ['apple', 'orange']

我根据以下数据框列中的频率建立了它们:

{'fruits': {0: 'apple',
1: 'apple',
2: 'orange',
3: 'orange',
4: 'banana',
5: 'grape'}}

该数据框列应重新编码如下:

{'fruits': {0: 'apple',
1: 'apple',
2: 'orange',
3: 'orange',
4: 'other',
5: 'other'}}

怎么做? (数据框有数百万条记录)


您至少可以使用以下几种方法:

where https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.where.html+ 布尔索引

df['fruits'].where(df['fruits'].isin(top_values), 'other', inplace=True)

loc https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html+ 布尔索引

df.loc[~df['fruits'].isin(top_values), 'fruits'] = 'other'

After在此过程中,您可能希望将您的系列变成分类:

df['fruits'] = df['fruits'].astype('category')

这样做before由于您的输入系列具有高基数,因此值替换操作可能不会有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pandas 数据框列映射到字典 的相关文章

随机推荐