将多个词典添加到一个单个数据范围pandas中



我有一组我通过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)

相关内容

最新更新