Найти значения из столбца в DF очень точно c раз для каждой уникальной даты - PullRequest
1 голос
/ 16 марта 2020

Я задал этот вопрос и получил ответ, который работает для общего случая с последовательными и не пропущенными данными, но не для моего конкретного случая. У меня есть DF, который выглядит следующим образом.

eventTime       MeteredEnergy Demand RunningHoursLamps 
6/7/2018 0:00   67.728           64  1037.82
6/7/2018 1:00   67.793           64  1038.82
6/7/2018 2:00   67.857           64  1039.82
6/7/2018 3:00   67.922           64  1040.82
6/7/2018 4:00   67.987           64  1041.82
6/7/2018 5:00                    64  1042.82
6/7/2018 6:00                        1043.43
6/7/2018 23:00  68.288
6/8/2018 0:00   67.728           64  1037.82
6/8/2018 23:00  67.793           64  1097.82

Мне нужен DF, который находит разницу между значениями RunningHoursLamps в час 0 и час 23 для каждой уникальной даты в «eventTime». Если данные отсутствуют для часа 0 или часа 23, результирующий DF может иметь NaN

Expected output

    Date        00:00       23:00       Difference 
    6/7/2018    1037.82     NaN         NaN
    6/8/2018    1037.82     1097.82     60

1 Ответ

0 голосов
/ 18 марта 2020

Обновление: для тех, кто заинтересован: я нашел способ сделать это. Я проанализировал отдельный столбец с датами и часами из столбца eventTime, прошел по нему и обработал исключения, когда у меня не было данных для требуемого DateTime. Спасибо.

#for loop to build the bill dataframe
bill = pd.DataFrame()

for i in range(len(unique_dates)):
    try :
        if i == 0:
            hour0 = np.nan
        else:
            hour0 = df.loc[((df['date'] == unique_dates[i]) & (df['hour'] == 0)),'RunningHoursLamp'].values[0]
    except IndexError:
        hour0 = np.nan

    try :
        hour24 = df.loc[((df['date'] == unique_dates[i+1]) & (df['hour'] == 0)),'RunningHoursLamp'].values[0]
    except IndexError:
        hour24 = np.nan

    temp = pd.DataFrame([[unique_dates[i],hour0,hour24]],columns=['Date','Hour_0','Hour_24'])  
    bill = bill.append(temp,ignore_index=True)

bill
...