반응형
웹에서 자동화 된 날씨 데이터를 읽고 있습니다. 관측은 5 분마다 발생하며 각 기상 관측소의 월별 파일로 컴파일됩니다. 파일 구문 분석이 완료되면 DataFrame은 다음과 같습니다.
Sta Precip1hr Precip5min Temp DewPnt WindSpd WindDir AtmPress
Date
2001-01-01 00:00:00 KPDX 0 0 4 3 0 0 30.31
2001-01-01 00:05:00 KPDX 0 0 4 3 0 0 30.30
2001-01-01 00:10:00 KPDX 0 0 4 3 4 80 30.30
2001-01-01 00:15:00 KPDX 0 0 3 2 5 90 30.30
2001-01-01 00:20:00 KPDX 0 0 3 2 10 110 30.28
내가 가진 문제는 때때로 과학자가 잘못된 행을 편집하는 것이 아니라 파일 끝에 중복 행을 추가하여 관찰을 수정한다는 것입니다. 이러한 경우의 간단한 예는 다음과 같습니다.
import pandas
import datetime
startdate = datetime.datetime(2001, 1, 1, 0, 0)
enddate = datetime.datetime(2001, 1, 1, 5, 0)
index = pandas.DatetimeIndex(start=startdate, end=enddate, freq='H')
data1 = {'A' : range(6), 'B' : range(6)}
data2 = {'A' : [20, -30, 40], 'B' : [-50, 60, -70]}
df1 = pandas.DataFrame(data=data1, index=index)
df2 = pandas.DataFrame(data=data2, index=index[:3])
df3 = df2.append(df1)
df3
A B
2001-01-01 00:00:00 20 -50
2001-01-01 01:00:00 -30 60
2001-01-01 02:00:00 40 -70
2001-01-01 03:00:00 3 3
2001-01-01 04:00:00 4 4
2001-01-01 05:00:00 5 5
2001-01-01 00:00:00 0 0
2001-01-01 01:00:00 1 1
2001-01-01 02:00:00 2 2
그래서 결국 df3
이 필요합니다.
A B
2001-01-01 00:00:00 0 0
2001-01-01 01:00:00 1 1
2001-01-01 02:00:00 2 2
2001-01-01 03:00:00 3 3
2001-01-01 04:00:00 4 4
2001-01-01 05:00:00 5 5
행 번호 열 ( df3 [ 'rownum'] = range (df3.shape [0])
)을 추가하면 <의 모든 값에 대해 맨 아래 행을 선택하는 데 도움이된다고 생각했습니다. code> DatetimeIndex ,하지만 group_by
또는 pivot
(또는 ???) 문을 찾아야합니다.
해결 방법
df3 = df3[~df3.index.duplicated(keep='first')]
제공된 샘플 데이터 사용 :
>>> %timeit df3.reset_index().drop_duplicates(subset='index', keep='first').set_index('index')
1000 loops, best of 3: 1.54 ms per loop
>>> %timeit df3.groupby(df3.index).first()
1000 loops, best of 3: 580 µs per loop
>>> %timeit df3[~df3.index.duplicated(keep='first')]
1000 loops, best of 3: 307 µs per loop
keep 인수를 변경하여 마지막 요소를 유지할 수 있습니다.
>>> %timeit df1.groupby(level=df1.index.names).last()
1000 loops, best of 3: 771 µs per loop
>>> %timeit df1[~df1.index.duplicated(keep='last')]
1000 loops, best of 3: 365 µs per loop
참조 페이지 https://stackoverflow.com/questions/13035764
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python의 스펙트로 그램을위한 FFT (0) | 2021.02.03 |
---|---|
파이썬 이미지 크기 (Python, OpenCV) (0) | 2021.02.03 |
파이썬 Python CSV - list index out of range (0) | 2021.02.03 |
파이썬 Python을 사용하여 정수를 반대로하고 회문인지 확인 (0) | 2021.02.03 |
파이썬 Add list to set? (0) | 2021.02.03 |
댓글