为了账号安全,请及时绑定邮箱和手机立即绑定

从下载的位置历史数据中使用熊猫创建数据框?

从下载的位置历史数据中使用熊猫创建数据框?

噜噜哒 2021-08-14 21:37:44
我从谷歌地图数据下载了位置历史 json,并希望将所有可用内容放入 Pandas 数据框中。df['locations'][5] yields the following:{'timestampMs': '1540084102574', 'latitudeE7': 327160442, 'longitudeE7': -1171687098, 'accuracy': 17, 'altitude': -13, 'verticalAccuracy': 3, 'activity': [{'timestampMs': '1540083982124',   'activity': [{'type': 'STILL', 'confidence': 100}]}]}我可以使用以下方法毫无问题地映射时间戳、纬度和经度:df['lat'] = df['locations'].map(lambda x: x['latitudeE7'])/10.**7df['long'] = df['locations'].map(lambda x: x['longitudeE7'])/10.**7 df['ts_ms'] = df['locations'].map(lambda x: x['timestampMs']).astype(float)/1000但不能为高度或垂直精度这样做,因为它返回“KeyError”在活动中还有一个嵌套结构。我如何将这些映射到数据框?
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我已尝试按如下方式重现您的问题:


sample = {

    'timestampMs': '1540084102574',

    'latitudeE7': 327160442,

    'longitudeE7': -1171687098,

    'accuracy': 17,

    'altitude': -13,

    'verticalAccuracy': 3,

    'activity': [{

        'timestampMs': '1540083982124',

        'activity': [{

            'type': 'STILL',

            'confidence': 100

            }]

        }]

}


# Creating an empty `DataFrame` of length one

df = pd.DataFrame([None],columns=['locations'])


# Passing your sample dictionary as its only value

df['locations'][0] = sample

现在,无论是altitute和verticalAccuracy工作对我很好,因为这些都是keys在外部字典。


df['altitude'] = df['locations'].map(lambda x: x['altitude'])

df['verticalAccuracy'] = df['locations'].map(lambda x: x['verticalAccuracy'])

对于嵌套的项目,请注意,activity是list一个长度。


type(sample.get('activity'))  # returns `list`

len(sample.get('activity'))  # returns 1

因此,您需要索引列表的第一个(在本例中,索引号为零)项。该项目又将是一个 Python dictionary,需要通过括号表示法或更安全的 .get()方法来访问它。


df['timestampMs'] = df['locations'].map(lambda x: x['activity'][0].get('timestampMs'))

您可以将示例逻辑应用于嵌套在外部字典键内的内部 activity字典键。


df['type'] = df['locations'].map(lambda x: x['activity'][0].get('activity')[0].get('type'))

df['confidence'] = df['locations'].map(lambda x: x['activity'][0].get('activity')[0].get('confidence'))



查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信