user4602735
user4602735

Reputation:

How to get the unique values from pandas dataframe based on same id of other column

I have pandas dataframe as follows:

user id
1     2
1     2
1     2
1     3
1     3

i want to group by values like this: (1,1,1,2),(1,1,3)

I am using this and it is giving unique values of one column only

pd.unique(df[['id']].values.ravel())

but i want to groupby values with unique of id column using pandas.

Upvotes: 2

Views: 440

Answers (1)

Zeugma
Zeugma

Reputation: 32095

One way, seems self-explanatory:

df = df.sort_values(['user', 'id'])

df['groups'] = (df.id!=df.id.shift()).cumsum()  # pattern to number groups

df
Out[26]: 
   user  id  groups
0     1   2       1
1     1   2       1
2     1   2       1
3     1   3       2
4     1   3       2

df.id = df.id.drop_duplicates('last').reindex_like(df)

df
Out[28]: 
   user   id  groups
0     1  NaN       1
1     1  NaN       1
2     1  2.0       1
3     1  NaN       2
4     1  3.0       2


df.set_index('groups').stack()
Out[30]: 
groups      
1       user    1.0
        user    1.0
        user    1.0
        id      2.0
2       user    1.0
        user    1.0
        id      3.0
dtype: float64

df.groupby(level=0).apply(tuple)
Out[36]: 
groups
1    (1.0, 1.0, 1.0, 2.0)
2         (1.0, 1.0, 3.0)
dtype: object

Upvotes: 1

Related Questions