python - 如何重新采样具有应用于每列的不同函数的数据框?

标签 python numpy time-series pandas

我在 pandas dataframe 中有温度和辐射的时间序列。时间分辨率为 1 分钟,以常规步长。

import datetime
import pandas as pd
import numpy as np

date_times = pd.date_range(datetime.datetime(2012, 4, 5, 8, 0),
                           datetime.datetime(2012, 4, 5, 12, 0),
                           freq='1min')
tamb = np.random.sample(date_times.size) * 10.0
radiation = np.random.sample(date_times.size) * 10.0
frame = pd.DataFrame(data={'tamb': tamb, 'radiation': radiation},
                     index=date_times)
frame
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 241 entries, 2012-04-05 08:00:00 to 2012-04-05 12:00:00
Freq: T
Data columns:
radiation    241  non-null values
tamb         241  non-null values
dtypes: float64(2)

如何将此 dataframe 下采样到一小时的分辨率,计算温度的每小时 mean 和每小时 sum辐射?

最佳答案

在 pandas 0.18 中,重采样 API 发生了变化(参见 docs)。 所以对于 pandas >= 0.18 的答案是:

In [31]: frame.resample('1H').agg({'radiation': np.sum, 'tamb': np.mean})
Out[31]: 
                         tamb   radiation
2012-04-05 08:00:00  5.161235  279.507182
2012-04-05 09:00:00  4.968145  290.941073
2012-04-05 10:00:00  4.478531  317.678285
2012-04-05 11:00:00  4.706206  335.258633
2012-04-05 12:00:00  2.457873    8.655838

旧答案:

我正在回答我的问题以反射(reflect) pandas >= 0.8 中与时间序列相关的变化(所有其他答案都已过时)。

使用 pandas >= 0.8 答案是:

In [30]: frame.resample('1H', how={'radiation': np.sum, 'tamb': np.mean})
Out[30]: 
                         tamb   radiation
2012-04-05 08:00:00  5.161235  279.507182
2012-04-05 09:00:00  4.968145  290.941073
2012-04-05 10:00:00  4.478531  317.678285
2012-04-05 11:00:00  4.706206  335.258633
2012-04-05 12:00:00  2.457873    8.655838

关于python - 如何重新采样具有应用于每列的不同函数的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020591/

相关文章:

Python:扭曲的服务器和值(value)观

python - 识别最近的网格点

r - 分析没有日期的时间序列

python - Pandas 时间序列 : Keep only one value peer week and id

Excel 用连续 x 轴绘制时间序列频率

python - 如何通过python获取GA的详细信息

python - 为什么在 Python 中关闭 Sqlite3 的游标

python - scrapy混合来自不同页面的项目字段

python - scipy 样条插值与 interp1d IndexError

python - 将最大 numpy 数组偏移量转换为元组?