2014-09-22 165 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