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时看到类似回答的人那里,但显然没有。谢谢,但我想你误解了我的问题。为了澄清,我做了一些编辑。谢谢,但我想你误解了我的问题。为了澄清,我做了一些编辑。谢谢,但我想你误解了我的问题。为了澄清,我做了一些编辑。