Выполните расчет между строками с индексом даты и времени и поместите их в новые столбцы.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Выполните расчет между строками с индексом даты и времени и поместите их в новые столбцы.

Сообщение Anonymous »

У меня есть кадр данных, созданный с помощью этого фрагмента кода:

Код: Выделить всё

import pandas as pd
import datetime as dt

datarange=pd.date_range('01-05-2018 00:00:00', periods=50, freq="4H")
range_series_1=pd.Series(np.random.randint(-5,3,size=50).astype(float), index=datarange)
range_series_2=pd.Series(np.random.randint(5,9,size=50).astype(float), index=datarange)
frame=pd.DataFrame({'value1':range_series_1, 'value2':range_series_2})
frame.index.name='datetime'
Мне нужны два дополнительных столбца (например, «столбец 1» и «столбец 2»), в которых будут выполняться следующие вычисления:

столбец 1 = значение1[каждый день в 4:00] — значение1[в тот же день в 12:00] --> значение должно быть указано в 00:00 дня
столбец 2 = значение1[каждый день в 4:00] - значение2[в тот же день в 12:00] --> значение должно быть размещено в 00:00 дня

Остальные строки в столбце 1 и столбце 2 должны быть либо NaN, либо 0.

Если есть идеи, как это сделать, пожалуйста ?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ для уточнения: У меня может быть фрейм данных, в котором не будет даты и времени, представленных здесь в таком строгом порядке, поэтому pd .shift() не может быть глобальным решением.

Пример желаемого результата следующий (с комментариями для большей ясности)< /strong>:

Код: Выделить всё

                     value1  value2  column1   column2
datetime
2018-01-05 00:00:00    -3.0     8.0      2.0      -8.0  #2.0=-3.0-(-5.0) and -8.0=-3.0-(5.0)
2018-01-05 04:00:00    -3.0     8.0      NaN       NaN
2018-01-05 08:00:00     1.0     8.0      NaN       NaN
2018-01-05 12:00:00    -5.0     5.0      NaN       NaN
2018-01-05 16:00:00     0.0     5.0      NaN       NaN
2018-01-05 20:00:00    -4.0     8.0      NaN       NaN
2018-01-06 00:00:00    -5.0     8.0     -1.0     -11.0  #-1.0=-5.0-(-4.0) and -11.0=-5.0-(6.0)
2018-01-06 04:00:00    -5.0     5.0      NaN       NaN
2018-01-06 08:00:00    -2.0     5.0      NaN       NaN
2018-01-06 12:00:00    -4.0     6.0      NaN       NaN
2018-01-06 16:00:00    -1.0     6.0      NaN       NaN
2018-01-06 20:00:00     1.0     7.0      NaN       NaN
2018-01-07 00:00:00    -1.0     5.0      4.0      -4.0  #4.0=2.0-(-2.0) and -4.0=2.0-(6.0)
2018-01-07 04:00:00     2.0     8.0      NaN       NaN
2018-01-07 08:00:00    -1.0     8.0      NaN       NaN
2018-01-07 12:00:00    -2.0     6.0      NaN       NaN
2018-01-07 16:00:00     2.0     6.0      NaN       NaN
2018-01-07 20:00:00    -4.0     6.0      NaN       NaN
Я пытаюсь выяснить, может ли мне помочь этот ответ, но я еще не очень знаком с перебором строк (Обновите фрейм данных в pandas, повторяя построчно ).

Подробнее здесь: https://stackoverflow.com/questions/585 ... to-new-col
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»