2016-05-26 8 views
3

У меня есть Pandas df с временным рядом, который длится 34 миллисекунды, и мне нужно только разрешение 5 секунд. Сначала я создал отметку времени и попытался установить временную метку в качестве индекса и повторной выборки и .iloc.Удаление n-й строки в Pandas

# Defining file path 
file = "C:/file/path/data.csv" 

# Read in data and parse date/time to DateTime format 
data = pd.read_csv(file,header=10,parse_dates=[[0,1]],dayfirst=False) 

# time stamp in preferred format 
data['date_stamp'] = pd.to_datetime(data['Date_ Time'],dayfirst=False) 

#trying to get every 5 seconds, not 34 milliseconds 
data.iloc[::15,:] 

# saving new file to csv 
data.to_csv(""C:/file/path/data.csv"",date_format='%Y%m%d %H:%M:%S') 

Было бы лучше сделать индекс времени и повторную выборку? Этот код всегда возвращает те же данные в df. Каким образом можно сконденсировать эти данные на 5 секундных интервалов?

+0

, что случилось с 'RESAMPLE()'? – MaxU

+0

зависит от того, что вы хотите, IMO 'resampl'ing - это то, что я бы сделал – EdChum

+0

Вы пытаетесь агрегировать каждые 5 секунд (sum/avg/etc строки) или просто захватывать все строки, которые находятся на расстоянии 5 секунд друг от друга – sedavidw

ответ

5

Я думаю, что вы можете использовать resample с first:

data.set_index('date_stamp', inplace=True) 
print (data.resample('5S').first()) 

См docs

Если использовать старые панд в 0.18.0:

print (data.resample('5S', how='first')) 
Смежные вопросы