Určit jedinečné klíče slovníků napříč řadami

hlasů
1

Mám datový rámec, kde každá řada je slovník, nicméně klíče v každém slovníku lišit. Rád bych iteraci každý řádek a získat jeden seznam se všemi unikátních klíčů. Ví někdo, jak to udělat?

Snažil jsem se tento kód

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

Ale to přináší jedinečné kombinace dict_keys () nejsou jedinečné kombinace kláves.

Například, řekněme mám dva řádky. Jak bylo uvedeno výše, hodnoty sloupců pro každé řadě jsou slovník. Klíče slovník pro řádku 1 jsou ovoce a zeleniny, a slovník klíče pro řádek 2 jsou ovoce, zeleniny a obilí.

Výše uvedený kód by produkovat

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

a

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

Avšak to, co já chci výstup být jen seznam nebo pole s ovocem, zeleninou a obilí (unikátních klíčů vidět přes řádky).

Edit: screenshot datovém přidán zadat popis obrázku zde

Edit2: Ukázka kódu níže

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())))
Položena 07/11/2018 v 23:36
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Jen opakovat a přidat do souboru:

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'}

Asi to nejlepší, co může to vzhledem ke struktuře dat.

Odpovězeno 08/11/2018 v 00:07
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more