从列表列表生成pandas数据帧

时间:2016-07-25 01:50:18

标签: python list pandas dictionary dataframe

我想知道如何从列表列表中生成pd DataFrame,其格式如下:

输入:

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'

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 :(得分: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