Я хочу выбрать дубликаты в этом фрейме данных:
df = pd.DataFrame({'firstname':['stack','Bar Bar',np.nan,'Bar Bar','john','mary','jim'],
'lastname':['jim','Bar','Foo Bar','Bar','con','sullivan','Ryan'],
'email':[np.nan,'Bar','Foo Bar','Bar','john@com','mary@com','Jim@com']})
print(df)
firstname lastname email
0 stack jim NaN
1 Bar Bar Bar Bar
2 NaN Foo Bar Foo Bar
3 Bar Bar Bar Bar
4 john con john@com
5 mary sullivan mary@com
6 jim Ryan Jim@com
Этот метод работает нормально:
df = df.dropna(subset=['firstname', 'lastname', 'email'])
df = df[df.duplicated(subset=['firstname', 'lastname', 'email'], keep=False)]
print(df)
firstname lastname email
1 Bar Bar Bar Bar
3 Bar Bar Bar Bar
Принимая во внимание, что если я объединяю операции в цепочку, он не работает:
dupes = (df.dropna(subset=['firstname', 'lastname', 'email'])
.duplicated(subset=['firstname', 'lastname', 'email'], keep=False))
df = df[dupes]
IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match
Должен ли я вообще избегать цепочек, как это, и просто быть простым?Что здесь происходит?