1 回答
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'))
添加回答
举报