我想知道如何从列表列表中生成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'
答案 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