2 回答

TA貢獻1812條經(jīng)驗 獲得超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)])
如果您發(fā)現(xiàn)自己需要檢查例如特定值(只需將其替換為df.iloc[:,0]您想要的任何值)或其他邏輯條件,這可能會很有用。

TA貢獻1789條經(jīng)驗 獲得超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
細(xì)節(jié)
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
添加回答
舉報