我有一个数据框,其中一列是具有以下标签的分类变量:['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 130474Long 129701Medium 129607Very Long 110988Extremely Long 0Name: ride_type, dtype: int64换句话说,Extremely Long仍然存在,所以我不能只用我想要的四个类别绘制图表。
2 回答
慕森王
TA贡献1777条经验 获得超3个赞
这是分类数据的一个特征。你可能有这样的东西:
df = pd.DataFrame({'ride_type': pd.Categorical(
['Long', 'Long'], categories=['Long', 'Short'])})
df
ride_type
0 Long
1 Long
调用value_counts分类列将记录所有类别的计数,而不仅仅是存在的类别。
df['ride_type'].value_counts()
Long 2
Short 0
Name: ride_type, dtype: int64
解决方案是删除未使用的类别,或转换为字符串:
df['ride_type'].cat.remove_unused_categories().value_counts()
Long 2
Name: ride_type, dtype: int64
# or,
df['ride_type'].astype(str).value_counts()
Long 2
Name: ride_type, dtype: int64
至尊宝的传说
TA贡献1789条经验 获得超10个赞
您可以像这样删除行:
df = df.drop(df.index[df['A'] == 'cat'])
print(df['A'].value_counts())
dog 2
rabbit 2
Name: A, dtype: int64
添加回答
举报
0/150
提交
取消