Преобразование пар имя-значение в новые столбцы данных pandas - PullRequest
0 голосов
/ 19 ноября 2018

Как преобразовать столбец в кадре данных Python Pandas, который имеет один столбец с парами имя-значение, в дополнительные столбцы в пределах одного и того же кадра данных.

Столбец (attrs) с именованными парами значений имеет следующие значения:

[{'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.50,1750, false, false

Рассматривая преобразование содержимого столбца в правильный словарь Python и затем используя что-то вроде ответа Разделение словаря / списка внутри столбца Pandas на отдельные столбцы

1 Ответ

0 голосов
/ 19 ноября 2018

Может быть что-то вроде ниже:

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)

.

  attr_id10 attr_id11 attr_id7 attr_id8 attr_id9
0     false     false     4.00     2.50     1750
1     false     false     2.00     1.00      NaN
2     false     false      NaN      NaN      NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...