有人能澄清一下吗:
df = pd.DataFrame({'years': [2015, 2016, 2017,2017, 2018, 2019, 2019, 2020]})
df['years'] = df['years'].astype('category')
print(df.dtypes)
years category
dtype: object
现在,我创建了一个新变量来作为years
列的子集:
subset_years = [2015, 2016, 2017, 2018]
然后过滤years
:
subset_df = df[df['years'].isin(subset_years)]
print(subset_df)
years
0 2015
1 2016
2 2017
3 2017
4 2018
现在,我把独特的元素:
subset_df.years.unique()
我得到:
[2015, 2016, 2017, 2018]
Categories (4, int64): [2015, 2016, 2017, 2018]
但是如果我用subset_df.years.value_counts()
计算,我会得到:
2015 1
2016 1
2017 2
2018 1
2019 0
2020 0
Name: years, dtype: int64
我的问题是,为什么subset_df.years.value_counts()
返回2019
和2020
年,并且计数为0
?因为我已经过滤了years
......在子集/过滤期间,它不应该删除那些years
吗?
有人能解释一下发生了什么吗?
1条答案
按热度按时间6rqinv9w1#
这是因为
2019
和2020
仍然在类别中。如果您不希望筛选后的年份显示,可以在value_counts
之前重置类别: