Python 如何使用groupby创建唯一的用户ID级别数据帧?

Python 如何使用groupby创建唯一的用户ID级别数据帧?,python,pandas,Python,Pandas,我有一个ID Visit11 Visit12 Visit13 Visit14 Visit15的输入数据帧 1 Orange 2 Orange 2 Apple 3 Grapes 4 Apple 5 Not Defined 5 Apple 6 Apple

我有一个ID Visit11 Visit12 Visit13 Visit14 Visit15的输入数据帧

1   Orange              
2   Orange              
2       Apple           
3   Grapes              
4   Apple               
5   Not Defined             
5       Apple           
6   Apple               
7   Banana              
7                   
7                   
7                   
7                   
7                   
7                   
8   Banana              
8       Apple           
8           Banana      
8               Apple   
8                   Banana
9                   
9                   
9                   
9   

我正在使用groupby获得预期的输出,但它将所有购买的内容都包含在一个单元格中。我想在不同的列中加入购买,其中一行代表一个用户。预期输出应为


我相信你需要:

print (df)
   ID      Visit11 Visit12
0   1       Orange        
1   2               Orange
2   2        Apple        
3   3       Grapes        
4   4        Apple        
5   5  Not Defined        
6   5                Apple

df = df.replace('', np.nan)
df1 = df.set_index('ID').stack().unstack().sort_index(axis=1).reset_index().fillna('')
print (df1)
   ID      Visit11 Visit12
0   1       Orange        
1   2        Apple  Orange
2   3       Grapes        
3   4        Apple        
4   5  Not Defined   Apple
替代解决方案:

df = df.replace('', np.nan)
df1 = df.groupby('ID', as_index=False).first().fillna('')
print (df1)
   ID      Visit11 Visit12
0   1       Orange        
1   2        Apple  Orange
2   3       Grapes        
3   4        Apple        
4   5  Not Defined   Apple

为什么你的数据看起来像这样?我无法在这里正确编辑。这些是“ID Visit11 Visit12 Visit13 Visit14 Visit15”列。您可以执行类似于
打印(df.head(5).to_dict())
的操作并将输出粘贴到您的问题中吗?第一个解决方案给了我一个错误“ValueError:Index包含重复的条目,无法重塑”。然而,另一种方法奏效了。Thanks@shreeja7-好的,超级,仅当某些数据没有丢失时进行测试,因为
groupby.first
只获取每列每个组的第一个值。
df = df.replace('', np.nan)
df1 = df.groupby('ID', as_index=False).first().fillna('')
print (df1)
   ID      Visit11 Visit12
0   1       Orange        
1   2        Apple  Orange
2   3       Grapes        
3   4        Apple        
4   5  Not Defined   Apple