Здесь у меня есть набор данных с одним входом, включая дату и время. Здесь время не в установленное время. Итак, что я сделал, я перевыбор данных в 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