2017-03-21 43 views
1

作爲標題,我在熊貓有一列(系列),並且它的每一行都是像[0,1,2,3,4,5]這樣的列表。每個列表都有6個數字。我想將此列更改爲6列,例如,[0,1,2,3,4,5]將變成6列,其中0是第一列,1是第二列,2是第三列等。我怎麼做到的?如何將熊貓中的一列擴大到多列?

回答

2

您可以通過values列表轉換爲numpy array然後用DataFrame構造:

df = pd.DataFrame({'a':[[0,1,2,3,4,5],[0,1,2,3,4,5]]}) 
print (df) 
        a 
0 [0, 1, 2, 3, 4, 5] 
1 [0, 1, 2, 3, 4, 5] 

df1 = pd.DataFrame(df['a'].values.tolist()) 
print (df1) 
    0 1 2 3 4 5 
0 0 1 2 3 4 5 
1 0 1 2 3 4 5 

cols = list('abcdef') 
df1 = pd.DataFrame(df['a'].values.tolist(), columns=cols) 
print (df1) 
    a b c d e f 
0 0 1 2 3 4 5 
1 0 1 2 3 4 5 
0

如果我明白你的問題正確,你正在尋找一個置操作。

df = pd.DataFrame([1,2,3,4,5],columns='a') 
# .T stands for transpose 
print(df.T) 
+0

但我有1000行,我想每一個所有行的轉移到6分各列.. –

1

沒有@ jezrael的解決方案一樣快。但優雅:-)

applypd.Series

df.a.apply(pd.Series) 

    0 1 2 3 4 5 
0 0 1 2 3 4 5 
1 0 1 2 3 4 5 

df.a.apply(pd.Series, index=list('abcdef')) 

    a b c d e f 
0 0 1 2 3 4 5 
1 0 1 2 3 4 5 
+2

bigdata - 它會很慢;) – jezrael

+0

@jezrael是的,它會 – piRSquared