从列表字典创建熊猫数据框

时间:2020-08-13 19:31:42

标签: python pandas dataframe

我有一个图的连接成分的字典,例如:

d = {'A':[1,5,7],'B':[2,4], 'C':[3,6]}

并且我想创建以下形式的数据框:

  cc  node
0  A     1
1  A     5
2  A     7
3  B     2
4  B     4
5  C     3
6  C     6

我可以通过为字典中的每个键创建一个df然后连接它们来实现此目的,但是我正在寻找更好的解决方案。

4 个答案:

答案 0 :(得分:1)

d = {'A':[1,5,7],'B':[2,4], 'C':[3,6]}
df = []
for k,v in d.items():
    for i in v:
        df.append([k,i])
for l in df:
    print(l)



['A', 1]
['A', 5]
['A', 7]
['B', 2]
['B', 4]
['C', 3]
['C', 6]

答案 1 :(得分:1)

使用explode

进行检查
pd.Series(d).explode()

答案 2 :(得分:1)

也许是这样的:

import pandas as pd
d = {'A':[1,5,7],'B':[2,4], 'C':[3,6]}
temp = [[key, n] for key, val in d.items() for n in val]
df = pd.DataFrame(df, columns=['cc', 'node'])
print(df)

输出:

  cc  node
0  A     1
1  A     5
2  A     7
3  B     2
4  B     4
5  C     3
6  C     6

答案 3 :(得分:1)

IIUC,

cc, node = [], []
for key, value in d.items():
    cc += [key] * len(value)
    node += value
    
df = pd.DataFrame({'cc' : cc, 'node' : node})
print(df)

输出

  cc  node
0  A     1
1  A     5
2  A     7
3  B     2
4  B     4
5  C     3