Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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
在PythonDataFrame中,如果所有列的值都相同,如何基于行进行选择?_Python_Pandas_Dataframe - Fatal编程技术网

在PythonDataFrame中,如果所有列的值都相同,如何基于行进行选择?

在PythonDataFrame中,如果所有列的值都相同,如何基于行进行选择?,python,pandas,dataframe,Python,Pandas,Dataframe,我的df格式如下: Name A1 A2 A3 A4 def 0 0 0 0 def1 0 1 0 0 def2 0 0 0 0 def3 1 0 0 0 def4 0 0 0 0 预期产出: Name A1 A2 A3 A4 def 0 0 0 0 def2 0 0 0 0 def4 0 0 0 0 如果名称为第一列,则使用“按和选择的所有

我的df格式如下:

Name  A1   A2  A3  A4
def   0    0   0   0
def1  0    1   0   0
def2  0    0   0   0
def3  1    0   0   0
def4  0    0   0   0
预期产出:

Name  A1   A2  A3  A4
def   0    0   0   0
def2  0    0   0   0
def4  0    0   0   0
如果名称为第一列,则使用“按和选择的所有列比较第一列”:

如果名称是索引:

print (df)
      A1  A2  A3  A4
Name                
def    0   0   0   0
def1   0   1   0   0
def2   0   0   0   0
def3   1   0   0   0
def4   0   0   0   0


df = df[df.eq(df.iloc[:, 0], axis=0).all(axis=1)]
print (df)
      A1  A2  A3  A4
Name                
def    0   0   0   0
def2   0   0   0   0
def4   0   0   0   0
如果性能不重要,因为大型数据帧使用缓慢:

如果名称为第一列,则使用“按和选择的所有列比较第一列”:

如果名称是索引:

print (df)
      A1  A2  A3  A4
Name                
def    0   0   0   0
def1   0   1   0   0
def2   0   0   0   0
def3   1   0   0   0
def4   0   0   0   0


df = df[df.eq(df.iloc[:, 0], axis=0).all(axis=1)]
print (df)
      A1  A2  A3  A4
Name                
def    0   0   0   0
def2   0   0   0   0
def4   0   0   0   0
如果性能不重要,因为大型数据帧使用缓慢:

使用轴为1的pandas.DataFrame.nunique:

输出:

Name
def      True
def1    False
def2     True
def3    False
def4     True
dtype: bool
使用轴为1的pandas.DataFrame.nunique:

输出:

Name
def      True
def1    False
def2     True
def3    False
def4     True
dtype: bool

另一种方法是检查每列的差异:

df[df.varaxis=1==0]
另一种方法是检查每列的差异:

df[df.varaxis=1==0]
在数据帧上使用drop方法可以删除整行

data.drop(["def1", "def3"], inplace = False)
第一个参数是索引列表。 Inplace参数用于更改原始数据帧(如果为true)

要了解更多信息,请访问:

使用数据帧上的drop方法删除整行

data.drop(["def1", "def3"], inplace = False)
第一个参数是索引列表。 Inplace参数用于更改原始数据帧(如果为true)

要了解更多信息,请访问:

@Ch3steR感谢您指出这一点。我忘了写axis=1,所以它是按列工作的。请再试试我的答案。@Ch3steR谢谢你指出它。我忘了写axis=1,所以它是按列工作的。再试试我的答案。
data.drop(["def1", "def3"], inplace = False)