【发布时间】:2018-08-06 06:41:29
【问题描述】:
我有一个列表中的字典:
fit_statstest = [{'activities-heart': [{'dateTime': '2018-02-01',
'value': {'customHeartRateZones': [],
'heartRateZones': [{'caloriesOut': 2119.9464,
'max': 96,
'min': 30,
'minutes': 1232,
'name': 'Out of Range'},
{'caloriesOut': 770.2719,
'max': 134,
'min': 96,
'minutes': 120,
'name': 'Fat Burn'},
{'caloriesOut': 0,
'max': 163,
'min': 134,
'minutes': 0,
'name': 'Cardio'},
{'caloriesOut': 0,
'max': 220,
'min': 163,
'minutes': 0,
'name': 'Peak'}],
'restingHeartRate': 64}}],
'activities-heart-intraday': {'dataset': [{'time': '00:00:00', 'value': 57},
{'time': '00:00:10', 'value': 56},
{'time': '00:00:20', 'value': 59},
{'time': '00:00:35', 'value': 59},
{'time': '02:54:10', 'value': 85},
{'time': '02:54:20', 'value': 71},
{'time': '02:54:30', 'value': 66},
...],'datasetInterval': 1,
'datasetType': 'second'}},
{'activities-heart': [{'dateTime': '2018-02-02',
'value': {'customHeartRateZones': [],
'heartRateZones': [{'caloriesOut': 2200.61802,
'max': 96,
'min': 30,
'minutes': 1273,
'name': 'Out of Range'},
{'caloriesOut': 891.9588,
'max': 134,
'min': 96,
'minutes': 133,
'name': 'Fat Burn'},
{'caloriesOut': 35.8266,
'max': 163,
'min': 134,
'minutes': 3,
'name': 'Cardio'},
{'caloriesOut': 0,
'max': 220,
'min': 163,
'minutes': 0,
'name': 'Peak'}],
'restingHeartRate': 67}}],
'activities-heart-intraday': {'dataset': [{'time': '00:00:10', 'value': 80},
{'time': '00:00:15', 'value': 79},
{'time': '00:00:20', 'value': 74},
{'time': '00:00:25', 'value': 72},
{'time': '03:04:10', 'value': 61},
{'time': '03:04:25', 'value': 61},
{'time': '03:04:40', 'value': 61},
...],
'datasetInterval': 1,
'datasetType': 'second'}}]
我正在尝试将 'time': 'hh:mm:ss' 和 'value': Int 附加到 DataFrame。
这就是我为单个字典所做的(就像一个魅力):
time_list = []
val_list = []
for i in fit_statsHR['activities-heart-intraday']['dataset']:
val_list.append(i['value'])
time_list.append(i['time'])
这就是我尝试为多级字典列表做的方式:
time_test = []
val_test = []
for i in fit_statstest:
val_test.append(i['activities-heart-intraday']['dataset']['value'])
time_test.append(i['activities-heart-intraday']['dataset']['time'])
heartdftest = pd.DataFrame({'Heart Rate':val_test,'Time':time_test})
我收到此错误:列表索引必须是整数或切片,而不是 str;并且不太确定如何解决这个问题。
我尝试使用 .copy() 方法,但也不满意。
更新: @Phydeaux:为此干杯!我试过这个:
time_test = []
val_test = []
j = np.arange(0,len(fit_statstest))
for i in fit_statstest[j]['activities-heart-intraday']['dataset']:
val_test.append(i['value'])
time_test.append(i['time'])
我现在收到此错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-184-f3e7484e1cfc> in <module>()
3 j = np.arange(0,len(fit_statstest))
4
----> 5 for i in fit_statstest[j]['activities-heart-intraday']['dataset']:
6 val_test.append(i['value'])
7 time_test.append(i['time'])
TypeError: only integer scalar arrays can be converted to a scalar index
只有整数标量数组可以转换为标量索引。不知道我是否走在正确的轨道上!
【问题讨论】:
标签: python list pandas dictionary append