Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DataFrame:如何删除填充了多个列的行?_Python_Pandas_Dataframe_Data Cleaning - Fatal编程技术网

Python DataFrame:如何删除填充了多个列的行?

Python DataFrame:如何删除填充了多个列的行?,python,pandas,dataframe,data-cleaning,Python,Pandas,Dataframe,Data Cleaning,我有一个dataframe,其中的列应该是伪列(对于每行,只应填充一列)。但是,数据中有一些“噪音”:某些行填充了多个列。我想放下这些行 假设DataFrame如以下示例所示: a b c d 0 NaN 1 NaN NaN 1 1 2 3 4 2 1 1 NaN NaN 3 NaN NaN 1 NaN

我有一个dataframe,其中的列应该是伪列(对于每行,只应填充一列)。但是,数据中有一些“噪音”:某些行填充了多个列。我想放下这些行

假设DataFrame如以下示例所示:

  a       b        c        d  
0 NaN     1        NaN      NaN
1 1       2        3        4  
2 1       1        NaN      NaN 
3 NaN     NaN      1        NaN
4 1       NaN      1        NaN
因此,我的预期结果是删除行[1,2,4]。您可能会说,我只接受NaN值的数量等于列的数量的行-1

熊猫有什么方法可以做到这一点吗?

使用:

df[(df.shape[1]-1)==(df.isna().sum(axis=1))]


这个能让你到达那里。您只需计算一行中空值的数量,并基于此对帧进行切片

df[df.notna().sum(axis=1) <= 1]
    a    b    c   d
0 NaN  1.0  NaN NaN
3 NaN  NaN  1.0 NaN

df[df.notna().sum(axis=1)感谢以上!假设我的数据有更多的列,并且我只想删除基于上述列子集的行,你会怎么做?@Maciej如果我理解,你可以创建一个副本,
m=df.loc[:,[interest_columns]].copy()
然后将代码中的
df
替换为
m
。谢谢,这是一个完美的解决方案,它还允许您根据数据框中的列子集删除行!
df[df.notna().sum(axis=1) <= 1]
    a    b    c   d
0 NaN  1.0  NaN NaN
3 NaN  NaN  1.0 NaN