2015-11-28 3 views
1

Я пытаюсь использовать pandas для повторной печати данных отслеживания судна с секунд до минут, используя как = 'first'. Файловая структура называется hg1s. Уникальный идентификатор называется MMSI. Индекс datetime - TX_DTTM. Вот пример данных:Python -Pandas Downsampling с первым возвратом NaN

  TX_DTTM  MMSI  LAT  LON   NS 
2013-10-01 00:00:02 367542760 29.660550 -94.974195   15 
2013-10-01 00:00:04 367542760 29.660550 -94.974195   15 
2013-10-01 00:00:07 367451120 29.614161 -94.954459   0 
2013-10-01 00:00:15 367542760 29.660210 -94.974069   15 
2013-10-01 00:00:13 367542760 29.660210 -94.974069   15 

Код для ресэмплировать:

hg1s1min = hg1s.groupby('MMSI').resample('1Min', how='first') 

И образец данных на выходе:

hg1s1min[20000:20004] 
      MMSI    TX_DTTM     NS  LAT LON 
     367448060 2013-10-21 00:42:00     NaN  NaN NaN   
        2013-10-21 00:43:00     NaN  NaN NaN   
        2013-10-21 00:44:00     NaN  NaN NaN  
        2013-10-21 00:45:00     NaN  NaN NaN 

Это с уверенностью предположить, что существует несколько точек данных в течение каждой минуты, поэтому я не понимаю, почему это не собирает первую запись для этого метода. Я просмотрел эту ссылку: Pandas Downsampling Issue, потому что это похоже на мою проблему. Я попробовал передать label = 'left' и label = 'right', не работал.

Как вернуть первую запись каждую минуту для каждого MMSI?

+0

Я не могу воспроизвести проблему на небольшой выборке данных, которые были предоставлены. Не могли бы вы разместить минимальный пример, демонстрирующий 'NaN'? – jme

ответ

0

Как выясняется, проблема заключается не в методе, а в моем предположении о данных. Большой набор данных - месяц или 44640 минут. Хотя каждая запись в моем наборе данных имеет соответствующие значения, во времени нет 100% совпадений. В этом случае MMSI = 367448060 присутствует в 2013-10-17 23:24:31 и снова в 2013-10-29 20:57:32. между этими двумя точками данных нет данных для выборки, в результате чего получается NaN, что является правильным.