Python 筛选行时出现意外结果

Python 筛选行时出现意外结果,python,pandas,Python,Pandas,我通常使用以下语法过滤数据帧: FDF = DF[DF['Color'] == 'Blue'] 我希望看到一个结果,即FDF(我的过滤数据帧)只返回颜色列设置为蓝色的行。相反,我得到了这样的东西。有趣的是,这个程序过去工作正常,但在我升级操作系统并重新安装Python和所有库之后就停止了工作。而且,它不会在我的所有数据帧上都这样做。有什么想法吗 0 Color Shape Data 1 NaN NaN NaN 2 NaN

我通常使用以下语法过滤数据帧:

FDF = DF[DF['Color'] == 'Blue']
我希望看到一个结果,即FDF(我的过滤数据帧)只返回颜色列设置为蓝色的行。相反,我得到了这样的东西。有趣的是,这个程序过去工作正常,但在我升级操作系统并重新安装Python和所有库之后就停止了工作。而且,它不会在我的所有数据帧上都这样做。有什么想法吗

0    Color    Shape    Data 
1    NaN      NaN      NaN       
2    NaN      NaN      NaN        
3    NaN      NaN      NaN         
4    Blue     NaN      NaN        
5    NaN      NaN      NaN         
6    NaN      NaN      NaN   
编辑:我认为前三个回答误解了这个问题。我显示的是结果,而不是原始DF。我的原始DF如下所示:

     Color    Shape       Data  
0    Green    square      Y
1    Red      triangle    N
2    Red      circle      Y
3    Blue     circle      N
4    Green    square      N
5    Red      triangle    N
我期待的结果是:

     Color    Shape       Data       
3    Blue     circle      N     
('Color'、'Shape'、'Data')
不是您的列名,而是您的数据的第一行,否则不会为此行指定索引0。由于DF没有名为“Color”的列,
DF['Color']=='Blue'
不会过滤掉任何内容,因此它将返回所有记录


如果您从csv或Excel工作表导入数据,我建议您指定使用文件的第一行作为列名。

您缺少DF.loc,因此会得到不必要的行

将第一行设为列标题:

               DF=DF.rename(columns=DF.iloc[0].drop(DF.index[0])
然后使用以下命令仅获取颜色为蓝色的行:

               FDF=DF.loc[DF['Color'] =='Blue']

您试图按不存在的列名进行筛选。首先,将第一行作为列标题:

DF.columns = DF.iloc[0]
DF.reindex(DF.index.drop(0))
现在使用

FDF = DF[DF['Color'] == 'Blue']

我不太明白这个问题的负面评价。但是,我可以通过分配新索引和重命名列来解决这个问题。

共享您的底层数据帧(例如
df.to_dict()
)。还有通读:。谢谢。很难做到,因为它包含我无法公开共享的数据,但您的回答确实让我了解到我所做的似乎是正确的,并且在底层DF中有一些奇怪的东西导致了意外行为。我曾希望我的问题能传到那些在过滤DF时看到类似回答的人那里,但显然没有。谢谢,但我想你误解了我的问题。为了澄清,我做了一些编辑。谢谢,但我想你误解了我的问题。为了澄清,我做了一些编辑。谢谢,但我想你误解了我的问题。为了澄清,我做了一些编辑。