2016-07-25 201 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