Datový rámec zůstane prázdný po přiřazení platnou hodnotu pro sloupec

hlasů
0

Jsem v hodně zmatku ohledně provozu datového rámce, který se nezdá pracovat pro některé položky smyčky a nechápu proč.

Mám JSON podobný slovník pro řadu bytů s podrobnostmi o pokojů atd jsem procházet všemi těmito slovníky a přiřadit hodnoty do dočasného datového rámce. Pak jsem přidat dočasný datový rámec na celkovém datovém df, aby měly všechny bytového informace v jediném df.

Pro podsekce ‚ložnici‘ Rád bych, aby přístup detaily jako ‚vlastní koupelnou - y / n‘ a ‚typu posteli‘. Funguje pro většinu bytů, ale u některých bytů to prostě není správně přiřadit hodnoty na datovém - za datový rámec zůstane prázdná. To, co nechápu, na tom je, že samotná proměnné jsou uvedeny správně.

Zde je příklad:

Přiřazení typ postelí do prázdné df_bedroom jako tak:

  if bedroom_dict['subunits'] is not None:
            df_bedroom['bedroom_bed_type'] = bedroom_dict['subunits'][0]['type_code']
        else:
            df_bedroom['bedroom_bed_type'] = None

... vrátí prázdný datový rámec se správným štítkem kolony: zadejte

Kód však samo o sobě funguje úplně v pohodě:

 In[133]: bedroom_dict['subunits'][0]['type_code']
    Out[134]: 'double-bed'

Zde je také bedroom_dict:

[{'units': [{'id': 'e97d2133-4169-47b0-9419-509d4e9b130e',
         'type_code': 'kitchen',
         'features': [{'Code': 'chairs', 'Exists': True},
          {'Code': 'window', 'Exists': False},
          {'Code': 'balcony', 'Exists': True},
          {'Code': 'fridge', 'Exists': True},
          {'Code': 'freezer', 'Exists': True},
          {'Code': 'stove', 'Exists': True},
          {'Code': 'oven', 'Exists': True},
          {'Code': 'microwave', 'Exists': True},
          {'Code': 'washing-machine', 'Exists': True},
          {'Code': 'dryer', 'Exists': False},
          {'Code': 'dishwasher', 'Exists': True},
          {'Code': 'dishes-cutlery', 'Exists': False},
          {'Code': 'pots-pans', 'Exists': False},
          {'Code': 'table', 'Exists': True}],
         'subunits': None},
        {'id': '81115b60-2f42-4a5d-b8ee-e59cbd9405dc',
         'type_code': 'bathroom',
         'features': [{'Code': 'window', 'Exists': True},
          {'Code': 'toilet', 'Exists': True},
          {'Code': 'sink', 'Exists': True},
          {'Code': 'bathtub', 'Exists': True},
          {'Code': 'shower', 'Exists': False}],
         'subunits': None},
        {'id': '6e221089-ca2e-4ab9-9458-dcbfc877d7c4',
         'type_code': 'bedroom',
         'features': [{'Code': 'wardrobe', 'Exists': True},
          {'Code': 'desk', 'Exists': False},
          {'Code': 'chairs', 'Exists': False},
          {'Code': 'sofa', 'Exists': False},
          {'Code': 'window', 'Exists': True},
          {'Code': 'balcony', 'Exists': True},
          {'Code': 'tv', 'Exists': False},
          {'Code': 'lock', 'Exists': True}],
         'subunits': [{'id': 'f7e80f2d-357d-48c9-98e2-db04b598dc56',
           'type_code': 'single-bed',
           'features': None},
          {'id': 'd28fe587-3edf-47a4-a5fc-ba9a44359642',
           'type_code': 'single-bed',
           'features': None}]}

Existuje několik takových případů, zatímco u ostatních případech funguje to úplně v pohodě. Může mi někdo vysvětlit, proč Přiřazení hodnoty / řetězec dělat datový rámec nefunguje v tomto případě?

Všechno nejlepší, Hannah

Položena 07/11/2018 v 23:47
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Chápu, co se snažíte dělat. Jak se o extrahování „type_code“ z každé „podjednotky“ a přiřadit ji jako sloupec?

Za prvé, máte prázdný datový rámec.

df = pd.DataFrame(columns=['bedroom_bed_type'])
print(df)
Empty DataFrame
Columns: [bedroom_bed_type]
Index: []

A teď, extrakt pomocí seznamu s porozuměním a přiřadit tento zpět na datovém jako nový sloupec.

df['bedroom_bed_type'] =  [x['type_code'] for x in bedroom_dict['subunits']]
print(df) 
  bedroom_bed_type
0       double-bed
1         bathroom
Odpovězeno 08/11/2018 v 00:16
zdroj uživatelem

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