2015-04-26 232 views
1

我有以下格式的列表:Python列表以大熊貓數據幀

a=['date name','10150425010245 name1','10150425020245 name2'] 

我試圖將其轉換爲大熊貓DF:

newlist=[] 
for item in a: 
    newlist.append(item.split(' ')) 

現在,將它轉換爲DF:

pd.DataFrame(newlist) 

其中結果爲

    0  1 
0    date name 
1 10150425010245 name1 
2 10150425020245 name2 

我想要'日期'和'名稱'爲標題,但我無法設法做到這一點。有沒有一種更有效的方法來自動將字符串列表轉換爲數據框而不是這個?

回答

2

下面是一種方法。

使用列表推導而不是循環。

In [160]: data = [x.split('') for x in a] 

In [161]: data 
Out[161]: [['date', 'name'], ['10150425010245', 'name1'], ['10150425020245', 'name2']] 

然後用data[1:]的價值觀和data[0]列名。

In [162]: pd.DataFrame(data[1:], columns=data[0]) 
Out[162]: 
      date name 
0 10150425010245 name1 
1 10150425020245 name2 
+0

謝謝!這工作。它應該是x.split(''),但除此之外它可以工作。 – Anastasia

+0

感謝您的編輯。 – Zero

4

你是在正確的軌道上。稍作修改,您的代碼就可以正常工作。

import pandas as pd 
    a=['date name','10150425010245 name1','10150425020245 name2'] 
    newlist=[] 
    for item in a: 
     newlist.append(item.split(' ')) 

    newlist2=pd.DataFrame(newlist,columns=["date","name"])[1:] 

    newlist2 

    date   name 
    10150425010245 name1 
    10150425020245 name2 
1

誘惑總結一行已經給出答案:

a=['date name','10150425010245 name1','10150425020245 name2'] 
pd.DataFrame(
    map(str.split, a)[1:], 
    columns=a[0].split(), 
) 

輸出:

Out[8]: 
       date name 
0 10150425010245 name1 
1 10150425020245 name2 
+0

多數民衆贊成酷! thx :) –

+0

不完全。這裏有兩個問題。 1)輸出將有列名在那裏重複,而應該是'pd.DataFrame(map(str.split,a)[1:],columns = ['date','name'])'2)列名應該而是從列表中取出而不是手動傳遞它。 – Zero

+0

從1開始的索引是一件麻煩事。用你的評論更新它。 – fixxxer