如何将 JSON 行转换为列

问题描述 投票:0回答:4

我有一个基于行的 JSON 数据结构:

rows = [
    {'name': 'tim', 'age': 113}, 
    {'name': 'tess', 'age': 111},
]

我想转换为基于列的数据:

columns = {
    'name': ['tim', 'tess'],
    'age': [113, 111],
}

如果有很多行和列,最可读的方法是什么?

python list dictionary pivot reshape
4个回答
1
投票

使用

collections.defaultdict

from collections import defaultdict

rows = [
    {'name': 'tim', 'age': 113}, 
    {'name': 'tess', 'age': 111},
]

d = defaultdict(list)
for r in rows:
    for k, v in r.items():
        d[k].append(v)

print(d)
# defaultdict(<class 'list'>, {'name': ['tim', 'tess'], 'age': [113, 111]})

1
投票

你可以试试:

from collections import defaultdict
x = defaultdict(list)
for item in rows:
    for key, value in item.items():
        x[key].append(value)

1
投票
new_rows={'name':[],'age':[]}
for row in rows:
    new_rows['name'].append(row['name'])
    new_rows['age'].append(row['age'])

在这里,我正在创建一个新的字典,即“new_rows”。现在迭代“行”的元素,将每个字典元素的值附加到“new_rows”键


0
投票

这是我最后得到的:

columns = {k: [d[k] for d in rows] for k in rows[0]}

说明:

迭代第一行的键(

rows[0]
),并将其包装在字典中 理解。字典理解然后获取值 每行的每个键。

所以整个事情是一堆列表理解(每个键一个)迭代行,包装 在迭代第一行的键的字典理解中。

© www.soinside.com 2019 - 2024. All rights reserved.