【问题标题】:Grouping large GPS data by 1 min将大型 GPS 数据按 1 分钟分组
【发布时间】:2016-08-24 22:17:18
【问题描述】:
date          object
lat          float64
lon          float64
speed        float64
direction    float64

在我的csv 文件中,日期格式如下2016-04-29 11:45:21 它将日期显示为对象类型。每分钟有10多条记录。所以,我想组合在一起,并为每 1 分钟 GPS 数据应用速度平均值。 我尝试以下代码,其中数据文件是熊猫数据框。

datafile.groupby(pd.TimeGrouper('1Min'))['speed'].mean()

出现以下错误:

TypeError: 轴必须是 DatetimeIndex,但得到了一个 'Int64Index' 的实例


在注释中编辑后 datafile.head() 显示table outputtaxi table output after datafile.head()

现在我从 06:35:20 到 06:59:59 有 1069 条记录。我需要找到每 1 分钟数据的平均速度

【问题讨论】:

    标签: python csv datetime pandas time-series


    【解决方案1】:

    您需要使用以下方法从您的 data 列创建一个 DateTimeIndex

    df.index = pd.to_datetime(df.loc[: 'date'], format='%Y-%m-%d %H:%M:%S')
    

    但是,您可以利用内置的.read_csv() 功能,使用parse_dates=Trueindex_col=0date 读取为index,然后解析index(假设日期是第一个column)。

    【讨论】:

    • 但日期显示为 1970-01-01 00:00:00 为 2013-12-16 06:35:20。它没有显示 2013 年
    • 将有助于显示df.head()。请参阅更新 - 您可能可以优化您的 .read_csv() 以在阅读时正确解析日期 - 请参阅文档 pandas.pydata.org/pandas-docs/stable/generated/…
    • 那行得通,但还没有弄清楚。坚持了几个小时。当我使用上述命令时,输出为 1970-01-01 00:00:00.000000000 2013-12-16 06:35:20 speed 96 包含 1069 条记录。最后一条记录是 1970-01-01 00:00:00.000001068 2013-12-16 06:59:59 speed 78 为此,我如何按 1 分钟分组,因为按问题要求按上述代码分组仅给出值..
    • 运行 df.head() 并将结果添加到您的问题中,需要查看输出以了解您的数据的情况。
    • 我已编辑。由于帐户限制,我无法发布图像。有一个链接我在 datafile.head() 中附加了输出链接在单击表输出出租车时打开
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2015-06-13
    • 2021-10-05
    相关资源
    最近更新 更多