У меня есть набор данных, который содержит потребление энергии за полчаса. Я пытаюсь получить списки индексов строк, которые не потребляют энергию в течение длительного периода времени. Другими словами, я пытаюсь получить список индексов, которые содержат последовательные значения 0 в определенном столбце. Я использую следующий код, и некоторое время он работает нормально, но затем он начинает добавлять списки индексов, которые не равны 0.
import more_itertools as mit
indices = df.loc[df[df.columns[2]] == df[df.columns[2]].isnull()].index.values.tolist()
outages_indices = [list(group) for group in mit.consecutive_groups(indices)]
long_outages_indices = []
for i in outages_indices:
if len(i) >= 8:
long_outages_indices.append(i)
Например, в строке 849246 значение действительно равно 0, а в строке 1543677 - 0,105, но оно все еще является частью списка.
Первые несколько строк кадра данных:
LCLid tstp energy(kWh/hh)
MAC000002 2012-10-12 00:30:00.0000000 0.0
MAC000002 2012-10-12 01:00:00.0000000 0.0
MAC000002 2012-10-12 01:30:00.0000000 0.0
MAC000002 2012-10-12 02:00:00.0000000 0.0
MAC000002 2012-10-12 02:30:00.0000000 0.0
Желаемый вывод (который у меня уже есть, но он неверный):
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...],
[861958, 861959, 861960, 861961 ...],
[862015, 862016, 862017, 862018, ...], ...]
РЕДАКТИРОВАТЬ: Решено. Когда я объединял несколько CSV-файлов в один Pandas DataFrame, нумерация индексов начиналась бы снова с 0 при конкатенации нового файла. Я сбросил нумерацию индексов, и это решило мою проблему.