【发布时间】:2017-01-11 04:42:55
【问题描述】:
如何替换 pandas.DataFrame 中某些列中很少出现的值,即低频(同时忽略 NaN)?
例如,在以下数据框中,假设我想替换列 A 或 B 中在各自列中出现次数少于 3 次的任何值。我想用“其他”替换这些:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':['ant','ant','cherry', pd.np.nan, 'ant'], 'B':['cat','peach', 'cat', 'cat', 'peach'], 'C':['dog','dog',pd.np.nan, 'emu', 'emu']})
df
A | B | C |
----------------------
ant | cat | dog |
ant | peach | dog |
cherry | cat | NaN |
NaN | cat | emu |
ant | peach | emu |
换句话说,在 A 列和 B 列中,我想替换那些出现两次或更少的值(但不理会 NaN)。
所以我想要的输出是:
A | B | C |
----------------------
ant | cat | dog |
ant | other | dog |
other | cat | NaN |
NaN | cat | emu |
ant | other | emu |
这与之前发布的问题有关:Remove low frequency values from pandas.dataframe
但那里的解决方案导致“AttributeError:'NoneType'对象没有属性'any。'”(我想是因为我有NaN值?)
【问题讨论】:
标签: python-3.x pandas