2017-06-30 6 views
1

私はJSONデータから作成されたデータフレームを持っています。私の問題は、2つの列に辞書が含まれていることです。これらの列の1つから値をイテレータで抽出することができましたが、もう1つの列にもエラーを引き起こす空のセルがいくつか含まれています。空の値を持つデータフレーム列の余分なdict値

これは私のデータフレーム(の一部)は次のようになります。

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 
... 

(私はプライバシーの理由から緯度/経度の値を編集した)

問題は、緯度経度の列です。私は、緯度と経度を別々の列に入れて、簡単にその場所を使用できるようにしたいと思います。

次のコードを別の同様の列に試してみましたが、うまくいきました。しかし、緯度経度の欄には、問題を引き起こすいくつかの空のセルが含まれています

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' 

は、私もそれがif文のいくつかの種類での作業を取得しようとしたが、私はその作業を取得していないようです。

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

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

誰かがこの問題の解決方法を教えてください。

答えて

1

以下のように、リストの理解に条件を追加できます。 latlngNone,latlonNaNとなります。

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

ありがとう、それはトリックでした! –