2 回答
TA贡献1812条经验 获得超5个赞
Zero 的回答.nunique(axis=1).eq(1)显然是最熊猫式的方法,但为了将来参考,这也有效:
import pandas as pd
import numpy as np
np.random.seed(seed=42)
df = pd.DataFrame(np.random.randint(0,2,size=(10,3)))
print(df)
print('\n')
print(df.loc[np.all([df[col] == df.iloc[:,0] for col in df],axis=0)])
如果您发现自己需要检查例如特定值(只需将其替换为df.iloc[:,0]您想要的任何值)或其他逻辑条件,这可能会很有用。
TA贡献1789条经验 获得超8个赞
使用filter和nunique
In [808]: df[df.filter(like='Class').nunique(1).eq(1)]
Out[808]:
Name Surname Class1 Class2 Class3 Class4
2 Walter White 1 1 1 1
细节
In [809]: df
Out[809]:
Name Surname Class1 Class2 Class3 Class4
0 John Smith 1 1 -1 1
1 Ned Walker -1 -1 -1 1
2 Walter White 1 1 1 1
In [810]: df.filter(like='Class')
Out[810]:
Class1 Class2 Class3 Class4
0 1 1 -1 1
1 -1 -1 -1 1
2 1 1 1 1
In [811]: df.filter(like='Class').nunique(1)
Out[811]:
0 2
1 2
2 1
dtype: int64
In [812]: df.filter(like='Class').nunique(1).eq(1)
Out[812]:
0 False
1 False
2 True
dtype: bool
添加回答
举报