2014-09-22 282 views
1

高效的方式,我有一个数据帧,看起来像这样:重塑一个大熊猫据帧

com_id region_id  represent_name 
2233  r1    A 
2233  r2    B 
2233  r4    C 
2234  r3    D 
2234  r1    E 
2235  r1    F 

只有四个region_id可能值。对于每家公司而言,某地区可能会有一名代表。我想是这样的:

com_id region1 region2 region3 region4 
2233  A  B  NaN  C 
2234  E  NaN  D  NaN 
2235  F  NaN  NaN NaN 

我已经试过类似透视表或在大熊猫拆散,但它不是在这种情况下工作。问题是每个公司现在或可能现在都有一个区域的代表,换句话说,每个公司的region_id中可能缺少值。

我的想法到目前为止是创造这样一个新的数据帧:

new = pd.DataFrame(index=np.unique(df['com_id']), 
        columns=np.unique(data['region_id'])) 

,但我不知道怎么走的更远。

谢谢!

回答

1

您可以拆散()如你试图做到这一点,但你需要首先设置索引:

df.set_index(['com_id','region_id']).unstack() 

Out[1662]: 
      rep_name    
region_id  r1 r2 r3 r4 
com_id       
2233    A B NaN C 
2234    E NaN D NaN 
+0

我试过,但得到了ValueError异常:索引包含重复的条目,不能重塑。 – jdeng 2014-09-22 15:52:08

+0

对,我假设你每个唯一的com_id/region_id组合中会有0或1个名字,就像样本数据中一样。那么,如果它是2个或更多的名字,那么期望的输出应该是什么样的? – JohnE 2014-09-22 16:13:28

+0

哎呀!我没有意识到com_id/region_id组合中有重复。我删除索引中的重复项,现在它可以工作! – jdeng 2014-09-22 17:34:50