熊猫类别:仅保留最常见的熊猫,并将其余的替换为NaN

时间:2019-10-21 21:40:11

标签: python pandas categorical-data

在具有pkg_resources的{​​{1}}中,我有253个唯一值。其中一些经常发生,而另一些仅发生一次或两次。现在,我只想保留其中的前10名,然后将其余的替换为pd.Series

我已经dtype=category创建了我想要保留的类别。但是现在?

np.nan相似吗?

top = df['cats'].value_counts().head(10)

但是对于我来说,这看起来不太像“熊猫”,我觉得有更好的方法。还有更好的建议吗?

2 个答案:

答案 0 :(得分:2)

# Sample data.
df = pd.DataFrame(
    {'cats': pd.Categorical(
        list('abcdefghij') * 5
        + list('klmnopqrstuvwxyz'))}
)

top_n = 10
top_cats = df['cats'].value_counts().head(top_n).index.tolist()
df.loc[~df['cats'].isin(top_cats), 'cats'] = np.nan

答案 1 :(得分:0)

开始

How can I keep the rows of a pandas data frame that match a particular condition using value_counts() on multiple columns

您可以考虑做类似的事情

top = set(df['cats'].value_counts().head(10))
df['cats'].apply(top.__contains__)