2015-09-21 43 views
0

需要關於數據幀轉換的幫助。我有Dataframe操作,與groupby有關的東西,可能是:/

df = pd.DataFrame({'C' : [1, 2, 1, 1, 2, 2, 1], 
        'D' : [1, 2, 13, 4, 5, 9, 10]}) 
df = df.sort('C') 
=>  C D 
    0 1 1 
    1 1 13 
    2 1 4 
    3 1 10 
    4 2 2 
    5 2 5 
    6 2 9 

,並希望得到

F1 F2 F3 F4 
1 1 13 4 10 
2 2 5 9 Nan 

目前,我遍歷一切,但在的大數據幀,它只是太慢了。

感謝

+0

其實我無法想出如何從數據框傳遞給其他人。你能否澄清你的問題?什麼是F1,..,F4? –

+0

即使我在想這件事!他們沒有連接C和D ,,,請你重新檢查數據? –

+0

同意,不清楚,對不起..試圖說清楚,在問題中排序('C')。我試圖從C的值中獲得的新Dataframe的2行有幫助嗎? – bibile

回答

3

您可以通過添加一個新的F列,然後調用pivot做到這一點:

>>> df["F"] = "F" + (df.groupby("C").cumcount() + 1).astype(str) 
>>> d2 = df.pivot(index="C", columns="F", values="D") 
>>> d2 
F F1 F2 F3 F4 
C     
1 1 13 4 10 
2 2 5 9 NaN 

的F和C有索引名和列名;如果你真的想擺脫那些你可以將它們設置爲無。

>>> d2.index.name = None 
>>> d2.columns.name = None 
>>> d2 
    F1 F2 F3 F4 
1 1 13 4 10 
2 2 5 9 NaN 
+0

完美,非常感謝! – bibile

相關問題