为什么 pandas value_counts() 显示某些值的计数为零?

我有一个数据框,其中一列是具有以下标签的分类变量:['Short', 'Medium', 'Long', 'Very Long', 'Extremely Long']。我正在尝试创建一个新的数据框来删除所有Extremely Long.


我尝试通过以下方式执行此操作:


df2 = df.query('ride_type != "Extremely Long"')

df2 = df[df['ride_type'] != 'Extremely Long']

但是,当我运行 .value_counts() 时,我得到以下信息:


df2.ride_type.value_counts()

>>> Short             130474

Long              129701

Medium            129607

Very Long         110988

Extremely Long         0

Name: ride_type, dtype: int64

换句话说,Extremely Long仍然存在,所以我不能只用我想要的四个类别绘制图表。


largeQ
浏览 159回答 2
2回答

慕森王

这是分类数据的一个特征。你可能有这样的东西:df = pd.DataFrame({'ride_type': pd.Categorical(    ['Long', 'Long'], categories=['Long', 'Short'])})df  ride_type0      Long1      Long调用value_counts分类列将记录所有类别的计数,而不仅仅是存在的类别。df['ride_type'].value_counts()    Long     2Short    0Name: ride_type, dtype: int64解决方案是删除未使用的类别,或转换为字符串:df['ride_type'].cat.remove_unused_categories().value_counts() Long    2Name: ride_type, dtype: int64# or,df['ride_type'].astype(str).value_counts() Long    2Name: ride_type, dtype: int64

至尊宝的传说

您可以像这样删除行:df = df.drop(df.index[df['A'] == 'cat'])print(df['A'].value_counts())dog       2rabbit    2Name: A, dtype: int64
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python