2017-02-03 127 views
2

的相同ID獲得獨特的價值觀我有熊貓數據框如下:如何從熊貓數據幀基於其他列

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

的獨特價值,但我想用獨特的使用熊貓ID列到GROUPBY值。

+0

IIUC你需要'df.groupby( '身份證')[ '用戶']唯一的()'? – jezrael

回答

1

的一種方式,似乎是不言自明的:

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