DataFrame παραμένει κενή μετά την ανάθεση έγκυρη τιμή στη στήλη

ψήφοι
0

Είμαι σε μια μεγάλη σύγχυση σχετικά με τη λειτουργία dataframe που δεν φαίνεται να λειτουργεί για ορισμένες θέσεις του βρόχου και δεν καταλαβαίνω γιατί.

Έχω ένα JSON-σαν λεξικό για μια σειρά από διαμερίσματα με λεπτομέρειες σχετικά με τα δωμάτια κλπ εγώ βρόχο μέσω όλων αυτών των λεξικών και να εκχωρήσετε τιμές σε προσωρινή dataframe. Τότε θα προσθέσει την προσωρινή dataframe στη συνολική df dataframe, ώστε να έχουν όλες τις πληροφορίες διαμέρισμα σε ένα ενιαίο df.

Για την υποενότητα «κρεβατοκάμαρα» Θα ήθελα να έχουν πρόσβαση σε στοιχεία όπως το «ιδιωτικό μπάνιο - y / n» 'τύπος κρεβατιού και. Λειτουργεί για τους περισσότερους διαμερίσματα, αλλά για κάποιους διαμερίσματα απλά δεν εκχωρεί τις τιμές σωστά στο dataframe - η dataframe μένει άδειο. Αυτό που δεν καταλαβαίνω για αυτό είναι ότι τα ίδια τα μεταβλητές δίνονται σωστά.

Εδώ είναι ένα παράδειγμα:

Εκχώρηση τον τύπο κρεβατιού στο κενό df_bedroom όπως έτσι:

  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

... επιστρέφει ένα κενό dataframe με τη σωστή ετικέτα στήλης: εισάγετε

Ωστόσο, ο ίδιος ο κώδικας λειτουργεί μια χαρά:

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

Εδώ είναι και το 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}]}

Υπάρχουν αρκετές τέτοιες περιπτώσεις, ενώ για τις υπόλοιπες περιπτώσεις λειτουργεί μια χαρά. Μπορεί κανείς να εξηγήσει γιατί η ανάθεση μιας τιμής / χορδών κάνει το dataframe δεν λειτουργεί σε αυτή την περίπτωση;

Όλα τα καλύτερα, Hannah

Δημοσιεύθηκε 07/11/2018 στις 23:47
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Καταλαβαίνω αυτό που προσπαθούμε να κάνουμε. Τι λέτε για την εξαγωγή του «type_code» από κάθε «υπομονάδα» και την ανάθεση ως στήλη;

Κατ 'αρχάς, θα πρέπει άδειο DataFrame σας.

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

Και τώρα, το εκχύλισμα χρησιμοποιώντας μια λίστα με κατανόηση και να εκχωρήσετε αυτό πίσω στο DataFrame ως μια νέα στήλη.

df['bedroom_bed_type'] =  [x['type_code'] for x in bedroom_dict['subunits']]
print(df) 
  bedroom_bed_type
0       double-bed
1         bathroom
Απαντήθηκε 08/11/2018 στις 00:16
πηγή χρήστη

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