首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫平均日pandas.resample

熊猫平均日pandas.resample
EN

Stack Overflow用户
提问于 2016-09-20 20:43:13
回答 1查看 15.6K关注 0票数 5

我有一个类似于此的csv文件

代码语言:javascript
复制
Date,Temp1,Temp2

23-Oct-09 01:00:00,21.1,22.3

23-Oct-09 04:00:00,22.3,23.8

23-Oct-09 07:00:00,21.4,21.3

23-Oct-09 10:00:00,21.5,21.6

23-Oct-09 13:00:00,22.3,23.8

23-Oct-09 16:00:00,21.4,21.3

23-Oct-09 19:00:00,21.1,22.3

23-Oct-09 22:00:00,21.4,21.3

24-Oct-09 01:00:00,22.3,23.8

24-Oct-09 04:00:00,22.3,23.8

24-Oct-09 07:00:00,21.1,22.3

24-Oct-09 10:00:00,22.3,23.8

24-Oct-09 13:00:00,21.1,22.3

24-Oct-09 16:00:00,22.3,23.8

24-Oct-09 19:00:00,21.1,22.3

24-Oct-09 22:00:00,22.3,23.8

我阅读这些数据时:

代码语言:javascript
复制
df=pd.read_csv('data.csv', index_col=0)

并将索引转换为日期。

代码语言:javascript
复制
df.index=pd.to_datetime(df.index)

现在我想取每一天温度的平均值,我一直试图按下面的方式使用pd.resample,但是一直收到错误。我读过pandas.resample文档和这里的许多例子,现在仍然很困惑.

代码语言:javascript
复制
df_avg = df.resample('D', how = 'mean')

DataError:没有要聚合的数字类型

我希望df_avg是一个具有日期时间索引和两列的数据格式。我用的是熊猫0.17.1和蟒蛇3.5.2,任何帮助都非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-20 20:46:07

首先需要将string列转换为float

代码语言:javascript
复制
#add parameter parse_dates for convert to datetime first column
df=pd.read_csv('data.csv', index_col=0, parse_dates=[0])

df['Temp1'] = df.Temp1.astype(float)
df['Temp2'] = df.Temp2.astype(float)

df_avg = df.resample('D').mean()

如果astype返回error,问题是存在一些非数字值。因此,您需要将to_numericerrors='coerce'一起使用--然后所有“有问题的”值都转换为NaN

代码语言:javascript
复制
df['Temp1'] = pd.to_numeric(df.Temp1, errors='coerce')
df['Temp2'] = pd.to_numeric(df.Temp2, errors='coerce')

您还可以使用boolean indexing检查所有有问题值的行。

代码语言:javascript
复制
print df[pd.to_numeric(df.Temp1, errors='coerce').isnull()]
print df[pd.to_numeric(df.Temp2, errors='coerce').isnull()]
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39603399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档