Python 数据帧重置缓存

Python 数据帧重置缓存,python,pandas,numpy,Python,Pandas,Numpy,我在使用pandasDataFrame时遇到问题。考虑下面的数据文件< /代码>: 现在,如果我使用seaborn绘制多个子地块。在这种情况下,子批次基于列比例。它只正确地创建了2个子批次,因为列scale中只有两个唯一的值: 简单代码: 将产生: 生成的图形示例: 当我尝试筛选行时,问题出现了。如果我过滤掉列scale值为weak的所有行,我应该只得到一个子图,但我仍然有两个子图,即使DataFrame不包含任何其他scale #筛选行 df=df[['scale']=='weak'

我在使用
pandas
DataFrame
时遇到问题。考虑下面的<代码>数据文件< /代码>:

现在,如果我使用
seaborn
绘制多个子地块。在这种情况下,子批次基于列
比例
。它只正确地创建了2个子批次,因为列
scale
中只有两个唯一的值:

简单代码:

将产生:

生成的图形示例:

当我尝试筛选行时,问题出现了。如果我过滤掉列
scale
值为
weak
的所有行,我应该只得到一个子图,但我仍然有两个子图,即使
DataFrame
不包含任何其他
scale

#筛选行
df=df[['scale']=='weak']
#打印有关列比例的详细信息
打印(df['scale'].value_counts())
打印(设置(df['scale']))
将产生:

结果图包含空的子图:

我不知道这种行为是否正确,但我更希望没有空的子地块。有没有办法重新加载
数据帧
? 这是行不通的

到目前为止,我可以通过将数据帧保存到csv中并重新加载来重新加载数据帧,但这并不漂亮


谢谢你的帮助

您的
scale
列必须是
category
dtype。过滤后,您需要调用:


什么是
print(df['scale'].dtype)
?我正在使用
category
dtype然后检查答案,它正是需要的。是的,现在查看它,感谢帮助!是的,这确实有效。谢谢你的快速回复!
print(df['scale'].value_counts())
print(set(df['scale']))
weak      960
strong    890
Name: scale, dtype: int64
{'weak', 'strong'}
g = seaborn.FacetGrid(df, row='scale')
g.map(plt.plot, 'proc', 'wall_avg')
weak      960
strong      0
Name: scale, dtype: int64
{'weak'}
df = df[['scale'] == 'weak']
df.scale.cat.remove_unused_categories(inplace=True)