如何解决熊猫数据帧日期时间索引的重采样错误
我正在运行一个 txt。文件通过 python 并尝试将数据重新采样为每日平均值。 .txt。文件包含实际数据集之前的文本,所以我读取了文件然后删除了第一行。整个数据集大约有 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: Only valid with DatetimeIndex,TimedeltaIndex or PeriodIndex,but got an instance of 'Index'”。即使在重置索引后,我也不知道如何解决这个问题。当我将日期列设置为索引并尝试重新采样时,出现关键错误。我可以让它工作的唯一方法是,如果我在读取文件时索引日期列,并在导入文件之前删除不必要的前几行(但我宁愿不必这样做).
预期输出:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。