Как обновить панель Da Pandas без дубликатов - PullRequest
0 голосов
/ 10 мая 2019

В настоящее время я работаю над Livetiming-Software для приложения для автоспорта.Поэтому мне нужно сканировать веб-страницу Livetiming и копировать данные в большой Dataframe.Этот Dataframe является источником нескольких диаграмм, которые я хочу сделать.Чтобы поддерживать мой датафрейм в актуальном состоянии, мне приходится очень часто сканировать веб-страницу.

Я могу загрузить Данные и сохранить их как Panda.Dataframe.Но моя проблема в том, чтобы перейти от загруженного DataFrame к большому Dataframe, который включает в себя все данные.

import pandas as pd
import numpy as np
df1= pd.DataFrame({'Pos':[1,2,3,4,5,6],'CLS':['V5','V5','V5','V4','V4','V4'],
                 'Nr.':['13','700','30','55','24','985'],
                 'Zeit':['1:30,000','1:45,000','1:50,000','1:25,333','1:13,366','1:17,000'],
                 'Laps':['1','1','1','1','1','1']})

df2= pd.DataFrame({'Pos':[1,2,3,4,5,6],'CLS':['V5','V5','V5','V4','V4','V4'],
                 'Nr.':['13','700','30','55','24','985'],
                 'Zeit':[np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,],
                 'Laps':['2','2','2','2','2','2']})
df3= pd.DataFrame({'Pos':[1,2,3,4,5,6],'CLS':['V5','V5','V5','V4','V4','V4'],
                 'Nr.':['13','700','30','55','24','985'],
                 'Zeit':['1:31,000','1:41,000','1:51,000','1:21,333','1:11,366','1:11,000'],
                 'Laps':['2','2','2','2','2','2']})
df1.set_index(['CLS','Nr.','Laps'],inplace=True)
df2.set_index(['CLS','Nr.','Laps'],inplace=True)
df3.set_index(['CLS','Nr.','Laps'],inplace=True)

df1 показывает Dataframe с предыдущих кругов.df2 показывает датафрейм на втором круге.Круг не закончен, поэтому у меня есть нан.На df3 отображается датафрейм после завершения второго круга.

Моя цель - иметь только одну строку для каждого круга на машину на класс.Либо у меня проблема, что у меня есть дубликаты с неполными кругами, либо вся дата перезаписывается.

Я надеюсь, что кто-то может помочь мне с этой проблемой.

Спасибо вам.

MrCrunsh

1 Ответ

0 голосов
/ 10 мая 2019

Если я правильно понимаю вашу проблему, ваша проблема заключается в том, что у вас есть перекрывающиеся данные для второго круга: информация, пока круг еще не завершен, и информация после его окончания.Если вы хотите поместить всю информацию для данного круга в один ряд, я бы предложил использовать многоиндексные столбцы или изменить имена столбцов, чтобы отразить разницу между измерениями во время и после кругов.

df = pd.concat([df1, df3])
df = pd.concat([df, df2], axis=1, keys=['after', 'during'])

Результат будет выглядеть так:

             after           during
               Pos      Zeit    Pos Zeit
CLS Nr. Laps
V4  24  1        5  1:13,366    NaN  NaN
        2        5  1:11,366    5.0  NaN
    55  1        4  1:25,333    NaN  NaN
        2        4  1:21,333    4.0  NaN
    985 1        6  1:17,000    NaN  NaN
        2        6  1:11,000    6.0  NaN
V5  13  1        1  1:30,000    NaN  NaN
        2        1  1:31,000    1.0  NaN
    30  1        3  1:50,000    NaN  NaN
        2        3  1:51,000    3.0  NaN
    700 1        2  1:45,000    NaN  NaN
        2        2  1:41,000    2.0  NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...