Python 3.x 如何基于其他列的相同id从dataframe中获取唯一值
我的数据框架如下所示:Python 3.x 如何基于其他列的相同id从dataframe中获取唯一值,python-3.x,pandas,Python 3.x,Pandas,我的数据框架如下所示: user id 1 2 1 2 1 2 1 3 1 3 我想按如下值进行分组: (1,1,1,2)、(1,1,3) 我正在使用它,它只给出一列的唯一值 pd.unique(df[['id']].values.ravel()) 但我想使用pandas按id列的唯一值分组。一种方式似乎是不言自明的: df = df.sort_values(['user', 'id']) df['groups'] = (df.id!=df.id.s
user id
1 2
1 2
1 2
1 3
1 3
我想按如下值进行分组:
(1,1,1,2)、(1,1,3)
我正在使用它,它只给出一列的唯一值
pd.unique(df[['id']].values.ravel())
但我想使用pandas按id列的唯一值分组。一种方式似乎是不言自明的:
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
IIUC您需要
df.groupby('id')['user'].unique()
?