Определить уникальные словарные ключи по строкам - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть датафрейм, где каждая строка является словарем, однако ключи в каждом словаре различаются. Я хотел бы перебрать каждую строку и получить один список со всеми уникальными ключами. Кто-нибудь знает, как это сделать?

Я попробовал этот код

np.unique(np.array(train.totals.apply(lambda x: ast.literal_eval(x).keys())))

Но это дает уникальные комбинации dict_keys (), а не уникальные комбинации клавиш.

Например, допустим, у меня есть две строки. Как уже упоминалось выше, значения столбцов для каждой строки представляют собой словарь. Ключи словаря для строки 1 - это фрукты и овощи, а ключи словаря для строки 2 - фрукты, овощи и зерно.

Приведенный выше код выдаст

dict_keys(['fruit','vegetable']) 

и

dict_keys(['fruit','vegetable','grain']) 

Однако я хочу, чтобы вывод был просто списком или массивом с фруктами, овощами и зерном (уникальные ключи, видимые в строках).

Редактировать: добавлен снимок экрана с кадром введите описание изображения здесь

edit2: Пример кода ниже

import pandas as pd 
import numpy as np
import ast

dummy_data = [['A',str({"pageviews":"1","hits":"1"})],['B',str({"pageviews":"1","visits":"1"})]]
dummy_df = pd.DataFrame(dummy_data,columns = ['ID','totals'])

np.unique(np.array(dummy_df.totals.apply(lambda x: ast.literal_eval(x).keys())))

1 Ответ

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

Просто повторяем и добавляем в набор:

In [1]: import pandas as pd
   ...: import numpy as np
   ...: import ast
   ...:
   ...: dummy_data = [['A',str({"pageviews":"1","hits":"1"})],['B',str({"pageviews":"1","visits":"1"})]]
   ...: dummy_df = pd.DataFrame(dummy_data,columns = ['ID','totals'])
   ...:
   ...:

In [2]: dummy_df
Out[2]:
  ID                             totals
0  A    {'pageviews': '1', 'hits': '1'}
1  B  {'pageviews': '1', 'visits': '1'}

In [3]: uniq = set()
   ...: for x in dummy_df.totals:
   ...:     uniq.update(ast.literal_eval(x))
   ...:

In [4]: uniq
Out[4]: {'hits', 'pageviews', 'visits'}

Вероятно, лучшее, что вы можете сделать, учитывая структуру ваших данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...