【发布时间】:2021-06-16 08:58:03
【问题描述】:
【问题讨论】:
-
那么当您尝试编写代码来解决问题时发生了什么?
标签: python python-3.x pandas dictionary
【问题讨论】:
标签: python python-3.x pandas dictionary
你可以melt它:
dic = {'a': ['b', 'c', 'd'], 'x': ['y', 'z', 'w']}
df = pd.DataFrame(dic)
df.melt(value_name='node', var_name='root')
root node
0 a b
1 a c
2 a d
3 x y
4 x z
5 x w
编辑:要处理不均匀的节点长度,请显式创建具有索引方向的原始df from_dict,这会将不均匀的节点填充为None。最后是dropna:
dic = {'a': ['b', 'c', 'd'], 'x': ['y', 'z', 'w', 't']}
df = pd.DataFrame.from_dict(dic, orient='index').T
df.melt(value_name='node', var_name='root').dropna()
root node
0 a b
1 a c
2 a d
4 x y
5 x z
6 x w
7 x t
【讨论】:
使用melt
d = {'a': ['b', 'c', 'd'], 'x': ['y', 'z', 'w']}
df = pd.DataFrame(d).melt(var_name='root',value_name='node')
print(df)
root node
0 a b
1 a c
2 a d
3 x y
4 x z
5 x w
【讨论】:
您应该遍历您的 dict 并创建您想要的数据。
import pandas as pd
dic = {'a': ['b', 'c', 'd'], 'x': ['y', 'z', 'w']}
column = ('node', 'root')
data = [(node, root) for root, nodes in dic.items() for node in nodes]
d = pd.DataFrame(columns=column, data=data)
print(d)
输出:
node root
0 b a
1 c a
2 d a
3 y x
4 z x
5 w x
【讨论】:
df = pd.DataFrame.from_dict(dic)
df.to_csv('test.csv', index=False)
您为数据框提供了 .csv 扩展名,并将其命名为 test.csv
【讨论】: