После повторной выборки, как добавить аналогичные значения между одинаковыми значениями с помощью Python - PullRequest
0 голосов
/ 21 ноября 2019

Здесь у меня есть набор данных с одним входом, включая дату и время. Здесь время не в установленное время. Итак, что я сделал, я перевыбор данных в 5 мин.

Затем я получил пустые строки, включая NaN. Затем я попытался заменить NaN на то же значение. Но в моей колонке у меня другое значение.

В моем файле csv данные:

date	time                   x
8/6/2018	6:15:00           1.1
8/6/2018	6:45:00           1.1
8/6/2018	7:45:00           1.2
8/6/2018	9:00:00           1.2
                             

Как видите, время моих данных не определено. Итак, что я сделал, сначала повторяйте данные каждые 5 минут.

Вот мой код:

def f (a):
  b = a  [['date','time','x']]
  b.index = a['date']
  c = b.resample('5T').apply(lambda x: x[0] if x.count() > 0 else None)
return c

data['day'] = data['date'].dt.date
data = data.groupby('day').apply(lambda x: f(x))

Затем я получил вывод:

                                              date      time      x
day        date                                                         
2018-06-08 2018-06-08 06:15:00  2018-06-08 06:15:00    6:15:00     1.1
           2018-06-08 06:20:00                 NaT      None      nan   
           2018-06-08 06:25:00                 NaT      None      nan   
           2018-06-08 06:30:00                 NaT      None      nan   
           2018-06-08 06:35:00                 NaT      None      nan   
           2018-06-08 06:40:00                 NaT      None      nan   
           2018-06-08 06:45:00 2018-06-08 06:45:00    6:45:00     1.1
           2018-06-08 06:50:00                 NaT      None      nan   
           2018-06-08 06:55:00                 NaT      None      nan   
           2018-06-08 07:00:00                 NaT      None      nan   
           2018-06-08 07:05:00                 NaT      None      nan   
           2018-06-08 07:10:00                 NaT      None      nan   
           2018-06-08 07:15:00                 NaT      None      nan   
           2018-06-08 07:20:00                 NaT      None      nan   
           2018-06-08 07:25:00                 NaT      None      nan   
           2018-06-08 07:30:00                 NaT      None      nan   
           2018-06-08 07:35:00                 NaT      None      nan   
           2018-06-08 07:40:00                 NaT      None      nan   
           2018-06-08 07:45:00 2018-06-08 07:45:00   7:45:00      1.2               
           2018-06-08 07:50:00                 NaT      None      nan   
           2018-06-08 07:55:00                 NaT      None      nan   
           2018-06-08 08:00:00                 NaT      None      nan   
           2018-06-08 08:05:00                 NaT      None      nan   
           2018-06-08 08:10:00                 NaT      None      nan   
           2018-06-08 08:15:00                 NaT      None      nan   
           2018-06-08 08:20:00                 NaT      None      nan   
           2018-06-08 08:25:00                 NaT      None      nan   
           2018-06-08 08:30:00                 NaT      None      nan   
           2018-06-08 08:35:00                 NaT      None      nan   
           2018-06-08 08:40:00                 NaT      None      nan
                                      :
                                      :
                                      :
                                      :
                                      :
          2018-06-08 09:00:00  2018-06-08 09:00:00    9:00:00      1.2   

Затем я попытался заменить NaN на это входное значение x. Я попробовал этот код:

data['x'] = data['x'].replace(np.nan, 1.1)

Затем он заполнен 1.1. Но в соответствии с моим CSV здесь у меня есть значение между 7.45 to 9:00:00 =1.2

Итак, я ожидал, что результат будет:

                                               date      time     x    expected x
day        date                                                         
2018-06-08 2018-06-08 06:15:00  2018-06-08 06:15:00    6:15:00    1.1      1.1
           2018-06-08 06:20:00                 NaT      None      nan      1.1 
           2018-06-08 06:25:00                 NaT      None      nan      1.1
           2018-06-08 06:30:00                 NaT      None      nan      1.1
           2018-06-08 06:35:00                 NaT      None      nan      1.1
           2018-06-08 06:40:00                 NaT      None      nan      1.1
           2018-06-08 06:45:00 2018-06-08 06:45:00    6:45:00     1.1      1.1                 
           2018-06-08 06:50:00                 NaT      None      nan      1.1
           2018-06-08 06:55:00                 NaT      None      nan      1.1
           2018-06-08 07:00:00                 NaT      None      nan      1.1
           2018-06-08 07:05:00                 NaT      None      nan      1.1
           2018-06-08 07:10:00                 NaT      None      nan      1.1
           2018-06-08 07:15:00                 NaT      None      nan      1.1
           2018-06-08 07:20:00                 NaT      None      nan      1.1
           2018-06-08 07:25:00                 NaT      None      nan      1.1
           2018-06-08 07:30:00                 NaT      None      nan      1.1 
           2018-06-08 07:35:00                 NaT      None      nan      1.1
           2018-06-08 07:40:00                 NaT      None      nan      1.1
           2018-06-08 07:45:00 2018-06-08 07:45:00   7:45:00      1.2      1.2            
           2018-06-08 07:50:00                 NaT      None      nan      1.2
           2018-06-08 07:55:00                 NaT      None      nan      1.2 
           2018-06-08 08:00:00                 NaT      None      nan      1.2
           2018-06-08 08:05:00                 NaT      None      nan      1.2
           2018-06-08 08:10:00                 NaT      None      nan      1.2
           2018-06-08 08:15:00                 NaT      None      nan      1.2
           2018-06-08 08:20:00                 NaT      None      nan      1.2
           2018-06-08 08:25:00                 NaT      None      nan      1.2
           2018-06-08 08:30:00                 NaT      None      nan      1.2
           2018-06-08 08:35:00                 NaT      None      nan      1.2
           2018-06-08 08:40:00                 NaT      None      nan      1.2
                                      :                                     :
                                      :
                                      :
                                      :                                     :
                                      :                                     :
          2018-06-08 09:00:00  2018-06-08 09:00:00    9:00:00      1.2     1.2
Run code snippetExpand snippet

Как вы можете видеть в моем ожидаемом результате, между 1,2 двумя значениями мне нужно заполнить эти 1,2 значения между этими 1,2.

Согласно моему коду, это не дает мне точный вывод. Так может ли кто-нибудь помочь мне решить эту проблему?

вот мой CSV: Мой CSV

когда я читаю CSV, мой вывод значения х показывает, как это только 1значение.

код:

data = pd.read_csv('data.csv')

вывод:

      date      time            x
0     8/6/2018   6:15:00        1      
1     8/6/2018   6:45:00        1    
2     8/6/2018   7:45:00        1    
3     8/6/2018   9:00:00        1      
4     8/6/2018   9:25:00        1     
5     8/6/2018   9:30:00        1     
6     8/6/2018  11:00:00        1     
7     8/6/2018  11:30:00        1    

1 Ответ

1 голос
/ 21 ноября 2019

Для меня прямое заполнение пропущенных значений работает хорошо, также ваша функция должна быть упрощена на first:

data['date'] = pd.to_datetime(data['date'] + ' ' + data['time'])

def f(a):
  b = a  [['date','time','x']]
  b.index = a['date']
  c = b.resample('5T').first()
  return c

data['day'] = data['date'].dt.date
data = data.groupby('day').apply(lambda x: f(x))
data['x'] = data['x'].ffill() 

print (data)
                                              date     time    x
day        date                                                 
2018-08-06 2018-08-06 06:15:00 2018-08-06 06:15:00  6:15:00  1.1
           2018-08-06 06:20:00                 NaT      NaN  1.1
           2018-08-06 06:25:00                 NaT      NaN  1.1
           2018-08-06 06:30:00                 NaT      NaN  1.1
           2018-08-06 06:35:00                 NaT      NaN  1.1
           2018-08-06 06:40:00                 NaT      NaN  1.1
           2018-08-06 06:45:00 2018-08-06 06:45:00  6:45:00  1.1
           2018-08-06 06:50:00                 NaT      NaN  1.1
           2018-08-06 06:55:00                 NaT      NaN  1.1
           2018-08-06 07:00:00                 NaT      NaN  1.1
           2018-08-06 07:05:00                 NaT      NaN  1.1
           2018-08-06 07:10:00                 NaT      NaN  1.1
           2018-08-06 07:15:00                 NaT      NaN  1.1
           2018-08-06 07:20:00                 NaT      NaN  1.1
           2018-08-06 07:25:00                 NaT      NaN  1.1
           2018-08-06 07:30:00                 NaT      NaN  1.1
           2018-08-06 07:35:00                 NaT      NaN  1.1
           2018-08-06 07:40:00                 NaT      NaN  1.1
           2018-08-06 07:45:00 2018-08-06 07:45:00  7:45:00  1.2
           2018-08-06 07:50:00                 NaT      NaN  1.2
           2018-08-06 07:55:00                 NaT      NaN  1.2
           2018-08-06 08:00:00                 NaT      NaN  1.2
           2018-08-06 08:05:00                 NaT      NaN  1.2
           2018-08-06 08:10:00                 NaT      NaN  1.2
           2018-08-06 08:15:00                 NaT      NaN  1.2
           2018-08-06 08:20:00                 NaT      NaN  1.2
           2018-08-06 08:25:00                 NaT      NaN  1.2
           2018-08-06 08:30:00                 NaT      NaN  1.2
           2018-08-06 08:35:00                 NaT      NaN  1.2
           2018-08-06 08:40:00                 NaT      NaN  1.2
           2018-08-06 08:45:00                 NaT      NaN  1.2
           2018-08-06 08:50:00                 NaT      NaN  1.2
           2018-08-06 08:55:00                 NaT      NaN  1.2
           2018-08-06 09:00:00 2018-08-06 09:00:00  9:00:00  1.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...