2016-08-23 4 views
1

У меня есть файл csv с 24-часовым временным рядом, содержащий измерения из 7 различных клапанов (solenoid vales), которые меняются каждые 10 минут (клапан 1,2,3,4,5,6, 1,2,3,4,5, 6,7, а затем снова начать с 1). Я хочу назначить уникальный Measurement ID каждый раз, когда клапан измеряет (1,2,3,4,5,6,7,8,9,10,11,12,13 ...), чтобы я мог в следующем шаг извлечения последних 10 секунд (= строк) каждого интервала измерения.Возможно ли создать уникальный идентификатор для многократного измерения классов во временном ряду?

Возможно ли это с пандами? Я безуспешно пытался найти функцию, которую я мог применить.

Я извлек это из моей панд dataframe df

df=pd.read_csv(file) 


Out[61]: 
       DATE_TIME solenoid_valves  N2O  CH4 CO2_ppm 
0  10/08/2016 12:04:56   7.000000 0.272953 1.810904  NaN 
.... 
8740 10/08/2016 14:30:36   2.000000 0.349828 29.527575 352.32 
8741 10/08/2016 14:30:37    NaN  NaN  NaN 352.61 
8742 10/08/2016 14:30:38   2.000000 0.349729 29.508612 352.12 
8743 10/08/2016 14:30:39   2.000000 0.349655 29.501180 352.88 
8744 10/08/2016 14:30:40   2.200969 0.349388 29.492402 353.16 
8745 10/08/2016 14:30:41   2.600484 0.347622 29.483979 352.44 
8746 10/08/2016 14:30:42   3.000000 0.341632 29.476394 352.96 
... 
56512 11/08/2016 3:46:48   3.000000 0.300992 8.988894 420.42 
56513 11/08/2016 3:46:49   3.000000 0.304847 8.990150 420.60 
56514 11/08/2016 3:46:50   3.143836 0.302620 8.991343 420.89 
56515 11/08/2016 3:46:51   4.000000 0.295150 8.992416 421.90 
56516 11/08/2016 3:46:52   4.000000 0.286783 8.993618 421.90 
56517 11/08/2016 3:46:53   4.000000 0.285636 8.994677 421.57 
56518 11/08/2016 3:46:54    NaN  NaN  NaN 422.47 
56519 11/08/2016 3:46:55   4.000000 0.276346 8.993526 422.75 
56520 11/08/2016 3:46:56   4.000000 0.277580 8.992645 423.02 

я определил следующие задачи:

  • При переключении клапана (см линию 8744,8745 или 56514) один или несколько номеров клапанов имеют десятичные числа. Я хочу исключить их, должен ли я сначала их удалить?
  • Некоторые строки имеют отсутствующие значения (NaN), которые следует игнорировать.

Я не уверен, что то, что я хочу, возможно, но это произведет революцию в моем анализе данных, поэтому любой ввод будет высоко оценен!

ответ

0

Для удаления строки с пропущенными значениями:

df = df.dropna() 

Затем держать только целые числа, сравнивая столбец с его преобразованных значений в виде целых чисел:

df = df[df.solenoid_valves == df.solenoid_valves.astype(int)] 
+0

Спасибо !! Это сработало хорошо .... Я все еще пытаюсь найти способ, но вставить столбец идентификатора, который будет меняться каждый раз, когда изменяется клапан ... Я думал об использовании чего-то типа grouped = df ['solenoid_valves']. Groupby (лямбда x: x.hour) ', но при изменении часа создается другая группа, но клапан еще не изменился. – vera

+1

(df.solenoid_valves! = df.solenoid_valves.shift()). cumsum() – Boud