Datenrahmen bleibt leer, nachdem gültigen Wert Spalte zuweisen

stimmen
0

Ich bin in einer Menge Verwirrung über Datenrahmen Operation, die für bestimmte Elemente einer Schleife nicht zu funktionieren scheint, und ich verstehe nicht, warum.

Ich habe einen Json-like Wörterbuch für eine Reihe von Appartements mit Details über Zimmer etc. Ich Schleife durch all diese Wörterbücher und weisen Werte in einen temporären Datenrahmen. Dann fügen Sie mir den temporären Datenrahmen für den Gesamtdatenrahmen df um alle Wohnung Informationen in einem einzigen df zu haben.

Für den Abschnitt ‚Schlafzimmer‘ würde Ich mag Details zu sehen, wie ‚ein eigenes Bad - j / n‘ und ‚Bett-Typ‘. Es funktioniert für die meisten Apartments, aber für einige Appartments es nicht zuweisen nur die Werte nicht richtig an den Datenrahmen - die Datenrahmen leer bleibt. Was ich nicht über das verstehen ist, dass die Variablen selbst richtig ausgegeben.

Hier ist ein Beispiel:

Zuweisen des Betttypen auf den leeren df_bedroom etwa so:

  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

... gibt einen leeren Datenrahmen mit der richtigen Spaltenbeschriftung: Geben

Doch selbst der Code arbeitet völlig in Ordnung:

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

Hier ist auch das 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}]}

Es gibt mehrere solche Fälle, während für andere Fälle es völlig in Ordnung funktioniert. Kann mir jemand erklären, warum die Datenrahmen die Zuordnung eines Wertes / string tun, ist in diesem Fall nicht funktioniert?

All the best, Hannah

Veröffentlicht am 07/11/2018 um 23:47
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Ich verstehe, was Sie zu tun versuchen. Wie wäre es die „type_code“ von jedem „Untereinheit“ zu extrahieren und sie als eine Spalte zuweisen?

Zuerst müssen Sie Ihre leeren Datenrahmen.

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

Und nun, Extrakt mit einer Liste Verständnis und weisen Sie auf die Datenrahmen dieses wieder als neue Spalte.

df['bedroom_bed_type'] =  [x['type_code'] for x in bedroom_dict['subunits']]
print(df) 
  bedroom_bed_type
0       double-bed
1         bathroom
Beantwortet am 08/11/2018 um 00:16
quelle vom benutzer

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