Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何基于其他列的相同id从dataframe中获取唯一值_Python 3.x_Pandas - Fatal编程技术网

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()