Python 熊猫:筛选的数据帧不返回任何行,但未筛选的数据帧返回任何行

Python 熊猫:筛选的数据帧不返回任何行,但未筛选的数据帧返回任何行,python,pandas,Python,Pandas,我正在从CSV文件创建熊猫数据帧: import pandas as pd filename = 'mike.csv' main_df = pd.read_csv(filename) print(main_df.shape)的输出是(280,23),因此此数据帧中有280行 但是,当我下次尝试按列值筛选此数据帧时: filtered_df = main_df.query('Status == "Active"') print(filtered_df.shape) ,输出odprint(fi

我正在从CSV文件创建熊猫数据帧:

import pandas as pd

filename = 'mike.csv'
main_df = pd.read_csv(filename)
print(main_df.shape)
的输出是
(280,23)
,因此此数据帧中有280行

但是,当我下次尝试按列值筛选此数据帧时:

filtered_df = main_df.query('Status == "Active"')
print(filtered_df.shape)
,输出od
print(filtered_df.shape)
(0,23)
,因此我没有得到任何行

根据下面的
打印输出(main_df.loc[:5,“Status”])
,列名或值名没有错误:


如何解决此问题?

如评论中所述,打印数据时不可见的空白可能是一个潜在问题。您可以使用以下方法删除它们:

然后


应该会产生所需的输出。

很难帮助,因为我们不知道您的数据。您能否检查主测向列中的
状态,即
main测向['Status']
的输出,以及
Active
是否真的以大写字母a开头?您确定序列中没有多余的空格吗?例如,当您使用
print
时,“Active”可能不会显示。实际上,您可以尝试:
df['Status']=df['Status'].str.strip()
?@Cleb,这很有效,非常感谢@Cleb,没问题:)我如何将其转换为一个循环来去除所有列中的空白?我尝试了对列表中的列(main_-df):main_-df[column].str.strip()
,但这给了我
AttributeError:只能使用带字符串值的.str访问器,它在pandas中使用np.object.dtype
如果您的所有列都是字符串类型,您可以使用
apply
df.apply(lambda x:x.str.strip())
.Hmm,它们并非都是字符串,因此出现上述错误。好的,然后您可以检查。
0    Active   
1    Draft    
2    Draft    
3    Draft    
4    Active   
5    Active   
Name: Status, dtype: object
df['Status'] = df['Status'].str.strip()
filtered_df = main_df.query('Status == "Active"')