用Python构建数据帧



我正在使用一个api创建一个数据帧。我想将其导出为csv。到目前为止,数据帧结构是:

Lap 1     Lap 2     Lap 3     Lap 4     Lap 5    
driver1  1:34.231  1:34.231  1:34.231  1:34.231  1:34.231
driver2  1:34.231  1:34.231  1:34.231  1:34.231  1:34.231 
driver3  1:34.231  1:34.231  1:34.231  1:34.231  1:34.231   

圈数达到64圈。司机人数为20人。当我将其导出为csv然后导入时。我得到的是:

Unnamed:0  Lap 1     Lap 2     Lap 3     Lap 4
0   driver1    1:34.231  1:34.231  1:34.231  1:34.231
1   driver2    1:34.231  1:34.231  1:34.231  1:34.231
2   driver3    1:34.231  1:34.231  1:34.231  1:34.231

如果我朝着正确的方向前进,我只需要一些帮助。

到目前为止我写的代码:

def arr_lap_times(driverId):
# Get JSON from API
url = 'http://ergast.com/api/f1/2020/last/drivers/' + driverId +'/laps.json?limit=63'
data = requests.get(url).json()
try:
# Get maximum of laps the driver did
lap_num = len(data['MRData']['RaceTable']['Races'][0]['Laps'])
lap = data['MRData']['RaceTable']['Races'][0]['Laps']
lap_times = []
# Adding all lap times into an array
for laps in range(lap_num):
# Get time of lap
timing = lap[laps]['Timings'][0]['time']
# Convert string into datetime
# Add lap times into array
lap_times.append(timing)

return lap_times

except IndexError:     
#print(driverId + " didn't particpate in this race")
return []

获取2020赛季的车手名单

url = 'http://ergast.com/api/f1/2020/drivers.json'
data = requests.get(url).json()
driver_detail = data['MRData']['DriverTable']['Drivers']
num_of_drivers = len(driver_detail)
driverId_arr = []
for driver in range(num_of_drivers):
driverId_arr.append(driver_detail[driver]['driverId'])

然后我把它放进字典

driver_dict = {}
for driver in driverId_arr:
lap_times = arr_lap_times(driver)
driver_dict.update({driver: lap_times})

然后我将字典转换为数据帧:

df = pd.DataFrame.from_dict(driver_dict, orient='index')

当您读取.csv' back in as aDataFrame`时,只需指定您的索引列:

file = pd.read_csv('filename.csv', index_col=0)

此命令告诉pandas,此.csv中的0索引列应被视为索引。

最新更新