팬더

2014-12-09 13 views
0

타임 스탬프는팬더

1. 2014-12-04 12:30:10 104,105,105,106,106,106,99,90 
2. 2014-12-04 12:32:19 86,86,87,88,88,89,90,92,93,95,97,100,102,104,1... 
3. 2014-12-04 12:32:58 110,110,110,110,110,110,110,110,110,110,110,10.. 

DatetimeIndex 속도 객체

I이 같은 DataFrame를 전송할 비 - 널 속도가 24 : 열 (총 1 열)

timestamp            speeds    

1. 2014-12-04 12:30:10         104 
2. 2014-12-04 12:30:11         105 
3. 2014-12-04 12:30:12         105 
4. .... 
5. 2014-12-04 12:32:17         90 
6. 2014-12-04 12:32:18     88 (resample and fill the timestamp and the mean speed value) 
7. 2014-12-04 12:32:19         86 
8. 2014-12-04 12:32:20         86 
9. 2014-12-04 12:32:21         87 

간단한 F가 이 일을하는거야? 또는 행 단위로만 반복하고 필드를 구문 분석 하시겠습니까?

답변

0

팬더에 대해 잘 모르겠지만 순수한 파이썬으로 할 수 있습니다. 힘들어, 나는 당신이 "(타임 스탬프와 평균 속도 값을 재 샘플링하고 채우십시오") 무슨 뜻인지 모르겠다. 그러나이없이, 당신은 다음과 수 있기 :

from datetime import datetime, timedelta 

in_s = ["2014-12-04 12:30:10 104,105,105,106,106,106,99,90", 
     "2014-12-04 12:32:19 86,86,87,88,88,89,90,92,93,95,97,100,102,104", 
     "2014-12-04 12:32:58 110,110,110,110,110,110,110,110,110,110,110"] 

for row in in_s: 
    date_str,time_str, entries_str = row.split() 
    #print(a_date,a_time, entries) 
    a_time = datetime.strptime(time_str, "%H:%M:%S") 
    for e in entries_str.split(','):  
     print(date_str, datetime.strftime(a_time, "%H:%M:%S"), e) 
     a_time = a_time + timedelta(seconds=1) 

이 결과 : 리샘플링에 대해

2014-12-04 12:30:10 104 
2014-12-04 12:30:11 105 
2014-12-04 12:30:12 105 
2014-12-04 12:30:13 106 
2014-12-04 12:30:14 106 
2014-12-04 12:30:15 106 
2014-12-04 12:30:16 99 
2014-12-04 12:30:17 90 
2014-12-04 12:32:19 86 
2014-12-04 12:32:20 86 
2014-12-04 12:32:21 87 
2014-12-04 12:32:22 88 
2014-12-04 12:32:23 88 
2014-12-04 12:32:24 89 
2014-12-04 12:32:25 90 
2014-12-04 12:32:26 92 
2014-12-04 12:32:27 93 
2014-12-04 12:32:28 95 
2014-12-04 12:32:29 97 
2014-12-04 12:32:30 100 
2014-12-04 12:32:31 102 
2014-12-04 12:32:32 104 
2014-12-04 12:32:58 110 
2014-12-04 12:32:59 110 
2014-12-04 12:33:00 110 
2014-12-04 12:33:01 110 
2014-12-04 12:33:02 110 
2014-12-04 12:33:03 110 
2014-12-04 12:33:04 110 
2014-12-04 12:33:05 110 
2014-12-04 12:33:06 110 
2014-12-04 12:33:07 110 
2014-12-04 12:33:08 110 
1

확실하지 않음 (하드 당신이 당신의 예에서 수행 할 작업 무슨 말을하는). 판다 (아마도 가장 우아한 방법은 아님)로 가능한 다른 것들 :

>>> df2 = df.apply(lambda x: pd.Series(x['speeds']),axis=1) 
>>> df2['timestamp'] = df['timestamp'] 
>>> df2 
    0 1 2 3 4 5 6 7 8 9 10 11 12 13   timestamp 
0 104 105 105 106 106 106 99 90 NaN NaN NaN NaN NaN NaN 2014-12-04 12:30:10 
1 6 86 87 88 88 89 90 92 93 95 97 100 102 104 2014-12-04 12:32:19 
>>> 
>>> df2 = df2.set_index('timestamp').stack().reset_index() 
>>> df2['timestamp'] = df2.apply(lambda x: x['timestamp'] + timedelta(seconds=x['level_1']), axis=1) 
>>> del df2['level_1'] 
>>> df2 
      timestamp 0 
0 2014-12-04 12:30:10 104 
1 2014-12-04 12:30:11 105 
2 2014-12-04 12:30:12 105 
3 2014-12-04 12:30:13 106 
4 2014-12-04 12:30:14 106 
5 2014-12-04 12:30:15 106 
6 2014-12-04 12:30:16 99 
7 2014-12-04 12:30:17 90 
8 2014-12-04 12:32:19 6 
9 2014-12-04 12:32:20 86 
10 2014-12-04 12:32:21 87 
11 2014-12-04 12:32:22 88 
12 2014-12-04 12:32:23 88 
13 2014-12-04 12:32:24 89 
14 2014-12-04 12:32:25 90 
15 2014-12-04 12:32:26 92 
16 2014-12-04 12:32:27 93 
17 2014-12-04 12:32:28 95 
18 2014-12-04 12:32:29 97 
19 2014-12-04 12:32:30 100 
20 2014-12-04 12:32:31 102 
21 2014-12-04 12:32:32 104