[英]Resampling error with pandas dataframe datetime index
我正在運行一個txt。 通過 python 文件並嘗試將數據重新采樣為每日平均值。 文本。 文件包含實際數據集之前的文本,所以我讀取了文件然后刪除了第一行。 整個數據集有大約 300 萬行。
示例數據如下所示:
**There are 20 lines of text before the data
Date Time Time Pressure Temperature
M/d/yyyy HH:mm:ss hr psi degF
10/23/2019 16:39:25 0.000000 13.3120 106.0533
10/23/2019 16:39:26 0.001389 13.2860 106.0155
10/23/2019 16:39:27 0.002778 13.2952 105.9848
10/23/2019 16:39:28 0.004167 13.2788 105.9535
10/23/2019 16:39:29 0.005556 13.2704 105.9228
10/23/2019 16:39:30 0.006944 13.2946 105.8922
10/23/2019 16:39:31 0.008333 13.2684 105.8620
我的代碼如下所示:
import pandas as pd
df = pd.read_csv('well_pressures.txt', header=None)
df.drop(df.head(20).index, inplace=True)
df.columns=['test']
df = df.test.str.split(expand=True)
df.rename(columns ={0:'Date', 1:'Time', 2:'Time2', 3:'Pressure', 4:'Temperature'},inplace=True)
df.drop(columns={'Time','Time2'}, inplace=True)
wellname = 'well 4'
df['Wellbore'] = wellname
df.set_index('Wellbore', inplace=True)
df['Date'] = pd.to_datetime(df['Date'])
df = df.resample('D').mean()
當我運行代碼時,我收到錯誤“TypeError:僅對 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但有一個 'Index' 實例”。 我不確定如何解決這個問題,即使在重置索引之后也是如此。 當我將日期列設置為索引並嘗試重新采樣時,我得到一個關鍵錯誤。 我可以讓它工作的唯一方法是,如果我在讀取文件時索引日期列,並在導入文件之前刪除不必要的前幾行(但我寧願不必這樣做)。
預期 output:
Wellbore Date Pressure Temperature
Well 4 10/23/2019 13.34 106.1
Well 4 10/24/2019 13.20 106.2
Well 4 10/25/2019 13.36 105.9
Well 4 10/26/2019 13.29 105.9
Well 4 10/27/2019 13.27 105.8
有什么建議么? 謝謝!
我認為您正在尋找pd.Grouper
。 此外,還有一些帶有read_csv
的參數,您可以利用這些參數來節省大量代碼:
df = (pd.read_csv('well_pressures.txt', sep='', usecols = [0,3,4], skiprows=20,
names=['Date', 'Pressure', 'Temperature'], parse_dates=True)
.assign(Wellbore='well 4')
.set_index('Date'))
df = df.groupby(pd.Grouper(freq='1D')).mean() #Also, you can try df = df.resample('D').mean() but I think you are looking to groupby day.
df
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.