在PythonDataFrame中,如果所有列的值都相同,如何基于行进行选择?
我的df格式如下:在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 如果名称为第一列,则使用“按和选择的所有
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)