用Python构造数据帧

2024-10-04 03:19:49 发布

您现在位置: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')

Tags: ofinjsonurldatadrivernumdict
1条回答
网友
1楼 · 发布于 2024-10-04 03:19:49

读取.csv' back in as a 数据帧时,只需指定索引列:

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

这会告诉pandas,此.csv中的0索引列应被视为索引

相关问题 更多 >