2017-10-13 69 views
0

我有这样的一个大熊猫数据帧:如何将不同行上的同一人(不同交易)上的不同信息移动到一行中?

Id  Name LogIn 
1  Kate 01/10/16 
2  Nancy 02/21/17 
3  Kate 03/12/17 
4  Kate 04/17/17 
5  Nancy 05/10/17 

这些都是“注册”不同的客户的信息。我想让每个客户只在一行中,并且他/她的“登录”日期列表中。例如:

Name LogIn1  LogIn2 LogIn3 
Kate 01/10/16 03/12/17 04/17/17 
Nancy 02/21/17 05/19/17 Nan 

我该怎么做熊猫?

回答

1

如果你不介意,我改变LOG1到log0

df.groupby('Name').LogIn.apply(list).apply(pd.Series).add_prefix('LogIn') 
Out[332]: 
     LogIn0 LogIn1 LogIn2 
Name        
Kate 01/10/16 03/12/17 04/17/17 
Nancy 02/21/17 05/10/17  NaN 

如果你需要的是完全一样的。

df=df.groupby('Name').LogIn.apply(list).apply(pd.Series) 
df.columns+=1 
df.add_prefix('LogIn').rename_axis(None) 
Out[338]: 
     LogIn1 LogIn2 LogIn3 
Kate 01/10/16 03/12/17 04/17/17 
Nancy 02/21/17 05/10/17  NaN 
+0

感谢您的回答,只有一个问题,我无法弄清楚。如果对于每个LogIn事件,我有相应的“持续时间”?我如何使Login1,Duration1,LogIn2,Duration2等? –

+0

@ N.Tamimi单独做和pd.concate他们 – Wen

+0

是的,你是对的。很难同时做到这一点。再次感谢。 –

相关问题