Python 熊猫:筛选的数据帧不返回任何行,但未筛选的数据帧返回任何行
我正在从CSV文件创建熊猫数据帧: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
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(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"')