将名称-值对转换为新的pandas数据列

2024-10-06 14:21:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将Python Pandas数据帧中有一列具有名称-值对的列转换为同一数据帧中的其他列。在

具有命名值对的列(attr)的值如下:

[{'attr_id': 7, 'val': '4.00'}, {'attr_id': 8, 'val': '2.50'}, {'attr_id': 9, 'val': '1750'}, {'attr_id': 11, 'val': 'false'}, {'attr_id': 10, 'val': 'false'}] [{'attr_id': 7, 'val': '2.00'}, {'attr_id': 8, 'val': '1.00'}, {'attr_id': 11, 'val': 'false'}, {'attr_id': 10, 'val': 'false'}] [{'attr_id': 11, 'val': 'false'}, {'attr_id': 10, 'val': 'false'}]

所以对于第一个记录,我尝试创建的新列将是attr_id7、attr_id8、attr_id9、attr_id10、attr_id11,其值为4.00,2.501750、false、false

考虑将列内容转换为适当的Python字典,然后使用类似于答案Splitting dictionary/list inside a Pandas Column into Separate Columns


Tags: 数据名称idfalse内容pandas记录val
1条回答
网友
1楼 · 发布于 2024-10-06 14:21:19

可能是下面这样的:

import pandas as pd
import numpy as np

l=[[{'attr_id': 7, 'val': '4.00'}, {'attr_id': 8, 'val': '2.50'}, {'attr_id': 9, 'val': '1750'}, {'attr_id': 11, 'val': 'false'}, {'attr_id': 10, 'val': 'false'}],
[{'attr_id': 7, 'val': '2.00'}, {'attr_id': 8, 'val': '1.00'}, {'attr_id': 11, 'val': 'false'}, {'attr_id': 10, 'val': 'false'}],
[{'attr_id': 11, 'val': 'false'}, {'attr_id': 10, 'val': 'false'}],]

d = []
for i in l:
    q={}
    for x in i:
        q['attr_id{}'.format(x['attr_id'])]=x['val']
    d.append(q)

df = pd.DataFrame(d)
print(df)

一。在

^{pr2}$

相关问题 更多 >