前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Pythonで辞書型のtrace_dtから一部データを抽出しtrace.csvを書き出したいです。
1行目でkeyerror:'position'となってしまい抽出できません。
trace_dt内に'position'があるか、key指定に間違いがなか等入念に確認しましたが、解決できず。
pythonを触るのが初めてなもので、質問させて頂きました。
宜しくお願いします。
発生している問題・エラーメッセージ
KeyError Traceback (most recent call last) <ipython-input-89-412e37eaad3a> in <module> ----> 1 positions = [[datetime.datetime.fromtimestamp(data['timestamp'] / 1000), data['position']] for data in trace.get('data')] 2 rows = [[dt.isoformat(), p['lat'], p['lng'], p.get('speed', ''), p.get('heading', '')] for dt, p in positions] 3 rows = [['TIMESTAMP', 'LATITUDE', 'LONGITUDE', 'SPEED_MPS', 'HEADING']] + rows 4 trace_csv = '\n'.join(map(lambda x: ','.join(map(str, x)), rows)) 5 print(trace_csv) <ipython-input-89-412e37eaad3a> in <listcomp>(.0) ----> 1 positions = [[datetime.datetime.fromtimestamp(data['timestamp'] / 1000), data['position']] for data in trace.get('data')] 2 rows = [[dt.isoformat(), p['lat'], p['lng'], p.get('speed', ''), p.get('heading', '')] for dt, p in positions] 3 rows = [['TIMESTAMP', 'LATITUDE', 'LONGITUDE', 'SPEED_MPS', 'HEADING']] + rows 4 trace_csv = '\n'.join(map(lambda x: ','.join(map(str, x)), rows)) 5 print(trace_csv) KeyError: 'position'
該当のソースコード
Python3
1positions = [[datetime.datetime.fromtimestamp(data['timestamp'] / 1000), data['position']] for data in trace.get('data')] 2rows = [[dt.isoformat(), p['lat'], p['lng'], p.get('speed', ''), p.get('heading', '')] for dt, p in positions] 3rows = [['TIMESTAMP', 'LATITUDE', 'LONGITUDE', 'SPEED_MPS', 'HEADING']] + rows 4trace_csv = '\n'.join(map(lambda x: ','.join(map(str, x)), rows)) 5print(trace_csv)
対象データ(trace_dt)
[{'timestamp': 1611050342745, 'position': {'alt': 41, 'lat': 35.32930204, 'lng': 139.48793563, 'type': 'gnss', 'speed': 0, 'accuracy': 11.127232551574707, 'timestamp': 1611050353000, 'altaccuracy': 1}, 'system': {'client': {'name': 'HERE Tracker', 'model': 'Pixel 3a', 'version': '1.1.5', 'firmware': 'RQ1A.210105.002', 'platform': 'android', 'manufacturer': 'Google'}, 'reportedSensorData': {'batteryLevel': 41, 'batteryIsCharging': False}}, 'serverTimestamp': 1611050490457}, {'timestamp': 1611050282678, 'position': {'alt': 53, 'lat': 35.32929445, 'lng': 139.48796048, 'type': 'gnss', 'speed': 0, 'accuracy': 23.525157928466797, 'timestamp': 1611050292000, 'altaccuracy': 1}, 'system': {'client': {'name': 'HERE Tracker', 'model': 'Pixel 3a', 'version': '1.1.5', 'firmware': 'RQ1A.210105.002', 'platform': 'android', 'manufacturer': 'Google'}, 'reportedSensorData': {'batteryLevel': 41, 'batteryIsCharging': False}}, 'serverTimestamp': 1611050490457},
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/24 04:22