отдельный список дикторов на столбцы и значения - PullRequest
0 голосов
/ 28 мая 2018

У меня есть фрейм данных, который содержит столбец «ExtData» со значениями [{"key":"title","value":"activation"},{"key":"remarks","value":"activation"}]

Я должен разделить эти данные и создать новый фрейм данных с именем столбца «title» и «remarks» и их значением«активация», т.е. «ключ» - это имя столбца, а их «значение» - как значение.

У меня есть такой фрейм данных

partner               ExtData
xyz          [{"key":"title","value":"activation"}, {"key":"remarks","value":"activation"}]
abc          [{"key":"title","value":"activation"}, {"key":"remarks","value":"activation"}]

Мне нужен вывод как новый фрейм данных с

**partner**   **title**      **remarks**
xyz           activation     activation
abc           activation     activation

с использованием панд и питона.


Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вот решение, используя DataFrame.apply метод:

def separate_extdata(row):
    for d in row['ExtData']:
            row[d['key']] = d['value']
    return row.drop('ExtData')

df = pd.DataFrame(
    [
      ('xyz', [{"key": "title", "value": "activation"},
               {"key":"remarks","value":"activation"}]), 
      ('abc', [{"key":"title","value":"activation"}, 
               {"key":"remarks","value":"activation"}])], 
    columns=['partner', 'ExtData']
)
df.apply(separate_extdata, axis=1)
#   partner       title     remarks
# 0     xyz  activation  activation
# 1     abc  activation  activation
0 голосов
/ 28 мая 2018
new_df = pandas.Dataframe()
new_index = 0
for i, row in df.iterrows():
    if 'key' in row['ExtData']:
       k = row['ExtData']['key']
       v = row['ExtData']['value']
       new_df.loc[new_index, k] = v
       new_index+=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...