dask - 如何创建具有多列的 dask 时间序列数据框
问题描述
我无法创建一个计算多列每小时平均值的 dask 时间序列数据框。
这是我的输入 csv 文件的示例:
name,date_time,num
dan,2019-01-02 00:00:00,3
ben,2019-01-02 00:00:00,7
dan,2019-01-02 02:00:00,13
dan,2019-01-02 10:00:00,9
dan,2019-01-02 10:01:00,3
ben,2019-01-02 14:22:00,66
ben,2019-01-02 14:37:00,37
我可以使用 pandas 产生所需的输出
import pandas as pd
from matplotlib import pyplot
df = pd.read_csv('my_file.csv')
df['timestamp'] = pd.to_datetime(df.date_time)
df = df.set_index(df.timestamp) # set a datetime index
df = df.groupby('name').resample('H')['num'].mean().unstack('name')
df.fillna(0).plot()
期望的输出
name ben dan
timestamp
2019-01-02 00:00:00 7.0 3.0
2019-01-02 01:00:00 NaN NaN
2019-01-02 02:00:00 NaN 13.0
2019-01-02 03:00:00 NaN NaN
2019-01-02 04:00:00 NaN NaN
2019-01-02 05:00:00 NaN NaN
2019-01-02 06:00:00 NaN NaN
2019-01-02 07:00:00 NaN NaN
2019-01-02 08:00:00 NaN NaN
2019-01-02 09:00:00 NaN NaN
2019-01-02 10:00:00 NaN 6.0
2019-01-02 11:00:00 NaN NaN
2019-01-02 12:00:00 NaN NaN
2019-01-02 13:00:00 NaN NaN
2019-01-02 14:00:00 51.5 NaN
我尝试用 dask 生成相同的数据帧
from dask import dataframe as dd
from matplotlib import pyplot
ddf = dd.read_csv('my_file.csv')
# setting an index
ddf['timestamp'] = dd.to_datetime(ddf.date_time)
ddf = ddf.set_index(ddf.timestamp)
ddf.repartition(freq='MS')
ddf.groupby('name').resample('H')['num'].mean()
当我运行上面的代码时,我得到了这个错误:
AttributeError: 'Column not found: resample'
这让我真的很难过,任何帮助都将不胜感激。
解决方案
看起来 dask 数据框没有实现 groupby-resample 操作。听起来您有功能请求。我建议在https://github.com/dask/dask/issues/new提出问题
有关在何处寻求帮助的请求,请参阅https://docs.dask.org/en/latest/support.html#asking-for-help 。
推荐阅读
- c++ - 当计算机在我的代码中要求输入数组中存在的键时,如何打印“数组中不存在键(元素)”
- user-interface - 带有 GUI 界面的 ACL 管理
- javascript - 以动态形式隐藏空输入
- javascript - 类不是 Safari(iOS 和 MacOS)中新事件的构造函数
- react-native - 管理推送通知
- python - 无法从传输连接中读取数据 - 来自 python 的 C# 端口
- laravel - curl请求中的Xero授权不成功错误
- javascript - 为什么 Jest 给出 ReferenceError 的?
- sql - 如何在使用触发器插入之前成功引用另一个表
- javascript - PDFTron 横向绘制文本