मैं वेब से कुछ स्वचालित मौसम डेटा पढ़ रहा हूं। अवलोकन प्रत्येक 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])) के एक कॉलम को जोड़ने से मुझे किसी भी मूल्य के लिए सबसे नीचे की पंक्ति का चयन करने में मदद मिलेगी DatetimeIndex, लेकिन मैं उस काम को करने के लिए group_byया pivot(या ???) कथनों का पता लगाने पर अड़ा हुआ हूं ।