2016-11-23 168 views
1

我想转换下面大熊猫据帧大熊猫据帧重塑/枢

a b 
0 1 2 
1 1 5 
2 2 4 
3 1 3 
4 3 7 
5 2 1 

0 1 2 
a   
1 2 5 3 
2 4 1 NaN 
3 7 NaN NaN 

你知道一个简单的方法?

+0

我很抱歉,但我看不到这里的模式。结果矩阵的元素究竟与原始元素有什么关系? –

+0

假设'b'栏显示血压读数,'a'栏显示患者ID。我希望将每位患者的所有读数都放在一行中。每个病人可能有1到最大数量的读数,例如10个。因此,最终的病床数量将是number_of_patients x 10。 – user2725109

回答

1

我会做如下:

In [11]: df.groupby("a")["b"].apply(lambda x: pd.Series(x.values)) 
Out[11]: 
a 
1 0 2 
    1 5 
    2 3 
2 0 4 
    1 1 
3 0 7 
Name: b, dtype: int64 

得到你想要的,那么你拆散形式(虽然可能以上更好):

In [22]: df.groupby('a')["b"].apply(lambda x: pd.Series(x.values)).unstack(1) 
Out[22]: 
    0 1 2 
a 
1 2.0 5.0 3.0 
2 4.0 1.0 NaN 
3 7.0 NaN NaN 
+0

伟大的解决方案。谢谢。 – user2725109