Skip to main content
AI Assist is now on Stack Overflow. Start a chat to get instant answers from across the network. Sign up to save and share your chats.
added 482 characters in body
Source Link
jezrael
  • 867.8k
  • 103
  • 1.4k
  • 1.3k

Use GroupBy.transform with DataFrameGroupBy.nunique for get rows not number of unique values per groups equal 1:

df1 = df[df.groupby('col1')['col2'].transform('nunique').ne(1)] print (df1) idx col1 col2 0 1 X A 3 4 X A 5 6 X B 

Or for get values of column col1 use DataFrameGroupBy.nunique with filter indices of Series:

s = df.groupby('col1')['col2'].nunique() vals = s.index[s.ne(1)].tolist() print (vals) ['X'] 

Use:

df1 = df[df.groupby('col1')['col2'].transform('nunique').ne(1)] 

Or:

s = df.groupby('col1')['col2'].nunique() vals = s.index[s.ne(1)] 

Use GroupBy.transform with DataFrameGroupBy.nunique for get rows not number of unique values per groups equal 1:

df1 = df[df.groupby('col1')['col2'].transform('nunique').ne(1)] print (df1) idx col1 col2 0 1 X A 3 4 X A 5 6 X B 

Or for get values of column col1 use DataFrameGroupBy.nunique with filter indices of Series:

s = df.groupby('col1')['col2'].nunique() vals = s.index[s.ne(1)].tolist() print (vals) ['X'] 
Source Link
jezrael
  • 867.8k
  • 103
  • 1.4k
  • 1.3k

Use:

df1 = df[df.groupby('col1')['col2'].transform('nunique').ne(1)] 

Or:

s = df.groupby('col1')['col2'].nunique() vals = s.index[s.ne(1)]