我有一组我通过for循环获得的python词典。我正在尝试将这些添加到Pandas DataFrame中。
输出的变量称为output
{'name':'Kevin','age':21}
{'name':'Steve','age':31}
{'name':'Mark','age':11}
我试图将这些字典中的每一个都附加到单个数据框中。我尝试执行以下操作,但添加了第一行。
df = pd.DataFrame(output)
任何人都可以建议在哪里出错,并将所有词典添加到数据框中。
在循环语句上更新
以下代码有助于读取XML并将其转换为数据框架。现在,我看到我能够通过多个XML文件循环并为每个XML文件创建字典。我正在尝试查看如何将这些词典中的每个词语添加到一个数据框中:
def f(elem, result):
result[elem.tag] = elem.text
cs = elem.getchildren()
for c in cs:
result = f(c, result)
return result
result = {}
for file in allFiles:
tree = ET.parse(file)
root = tree.getroot()
result = f(root, result)
print(result)
您可以将每个字典附加到列表中,最后调用DataFrame
构造函数:
out = []
for file in allFiles:
tree = ET.parse(file)
root = tree.getroot()
result = f(root, result)
out.append(result)
df = pd.DataFrame(out)
我们可以将这些命令添加到列表:
ds = []
for ...: # your loop
ds += [d] # where d is one of the dicts
当我们列出dict的列表时,我们可以在该列表上使用pd.DataFrame
:
ds = [
{'name':'Kevin','age':21},
{'name':'Steve','age':31},
{'name':'Mark','age':11}
]
pd.DataFrame(ds)
输出:
name age
0 Kevin 21
1 Steve 31
2 Mark 11
更新:如果不同的键有不同的键,例如:
,这不是问题ds = [
{'name':'Kevin','age':21},
{'name':'Steve','age':31,'location': 'NY'},
{'name':'Mark','age':11,'favorite_food': 'pizza'}
]
pd.DataFrame(ds)
输出:
age favorite_food location name
0 21 NaN NaN Kevin
1 31 NaN NY Steve
2 11 pizza NaN Mark
更新2:在我们以前在Python的讨论中进行构建 - 使用Python Pandas将XML转换为CSV:
results = []
for file in glob.glob('*.xml'):
tree = ET.parse(file)
root = tree.getroot()
result = f(root, {})
result['filename'] = file # added filename to our results
results += [result]
pd.DataFrame(results)