2016-07-25 71 views
1

列表的熊貓數據幀我想知道如何從名單列表的PD數據幀,在這種形式:生成列表

輸入:

A=[['a','b','c'],['c','d','e'],['f','g','h']] 

輸出(在數據幀)

No content 
0 'a' 
0 'b' 
0 'c' 
1 'c' 
1 'd' 
1 'e' 
2 'f' 
2 'g' 
2 'h' 

回答

1

你可以試試這個:

import pandas as pd 
A1 = pd.DataFrame(A).stack().reset_index().drop('level_1', 1).rename(columns = {'level_0': "No", 0: "content"}) 

A1 
# No content 
#0 0  a 
#1 0  b 
#2 0  c 
#3 1  c 
#4 1  d 
#5 1  e 
#6 2  f 
#7 2  g 
#8 2  h 

或者你可以先彙整清單,然後從它構造的數據幀:

dicA = {"No":[], "content":[]} 
for i, s in enumerate(A): 
    for e in s: 
     dicA['No'].append(i) 
     dicA['content'].append(e) 

import pandas as pd 
pd.DataFrame(dicA) 

# No content 
#0 0  a 
#1 0  b 
#2 0  c 
#3 1  c 
#4 1  d 
#5 1  e 
#6 2  f 
#7 2  g 
#8 2  h 
2

可以融化數據幀出示你想要的結果的轉置。

import pandas as pd 

>>> pd.melt(pd.DataFrame(A).T, var_name='No.', value_name='content') 
    No. content 
0 0  a 
1 0  b 
2 0  c 
3 1  c 
4 1  d 
5 1  e 
6 2  f 
7 2  g 
8 2  h 
0

清單上嘗試這種使用ZIP():

df = pd.melt(pd.DataFrame(zip(*A))).rename(columns= {'variable':'no','value':'content' }) 


    no content 
0 0  a 
1 0  b 
2 0  c 
3 1  c 
4 1  d 
5 1  e 
6 2  f 
7 2  g 
8 2  h 
+0

如果答案的作品,請考慮upvoting它 – Merlin