2017-06-30 10 views
1

Ich habe einen Datenrahmen, der aus JSON-Daten gemacht wurde. Das Problem, das ich habe, ist, dass zwei Spalten Wörterbücher enthielten. Es gelang mir, die Werte aus einer dieser Spalten mit einem Iterator zu extrahieren, aber die andere Spalte enthält auch einige leere Zellen, die einen Fehler verursachen. Dieseextra dict Werte aus Datenframes Spalte mit leeren Werten

ist, was (Teil) meine Datenrahmen wie folgt aussieht:

area           latLng  price 
0 191.0 {u'latitude': 52.000000, u'longitude': 5.220000} 120000 
1 192.0 {u'latitude': 52.080000, u'longitude': 5.240000} 420000 
2 140.0 {u'latitude': 52.100000, u'longitude': 5.230000} 175000 
3 180.0            None 165000 
... 

(ich die lat/lng Werte für den Datenschutz Gründen bearbeitet)

Das Problem mit der Säule latLng liegt. Ich möchte den Breiten- und Längengrad in verschiedenen Spalten erhalten, damit ich den Standort leicht verwenden kann.

Ich versuchte das folgende Stück Code für eine andere ähnliche Spalte und das hat gut funktioniert. Aber die latLng Spalte enthält einige leeren Zellen, die Probleme verursachen:

df["lat"] = [d.get('latitude') for d in df.latLng] 
df["lon"] = [d.get('longitude') for d in df.latLng] 

AttributeError: 'NoneType' object has no attribute 'get' 

Ich habe auch versucht mit irgendeiner Art von if-Anweisung es zum Laufen zu bringen, aber ich glaube nicht, dass die Arbeit zu bekommen.

df["lat"] = [d.get('latitude') for d in df.latLng if d.notnull()] 

AttributeError: 'dict' object has no attribute 'notnull' 

Kann jemand Hilfe anbieten, wie man dieses Problem löst?

Antwort

1

Sie können eine Bedingung in Ihrem Listenverständnis wie folgt hinzufügen. Wo latlng ist None, lat und lon enden als NaN.

df['lat'] = [d.get('latitude') if d is not None else None for d in df.latlng] 
df['lon'] = [d.get('longitude') if d is not None else None for d in df.latlng] 
+1

Danke, das hat den Trick! –

Verwandte Themen