【问题标题】:Resample a pandas dataframe with multiple variables对具有多个变量的 pandas 数据框进行重新采样
【发布时间】:2021-11-09 00:41:26
【问题描述】:

我有一个长格式的数据框,其中包含多个变量的 15 分钟间隔数据。如果我应用重采样方法来获取平均每日值,我会得到给定时间间隔内所有变量的平均值(而不是速度、距离的平均值)。

有谁知道如何重新采样数据框并保留 2 个变量?

注意:下面的代码包含一个长格式的示例数据帧,我的真实示例从 csv 加载数据并且变量的时间间隔和频率不同,因此我不能简单地重新采样宽格式的数据帧。

import pandas as pd
import numpy as np

dti = pd.date_range('2015-01-01', '2015-12-31', freq='15min')
df = pd.DataFrame(index = dti)

# Average speed in miles per hour
df['speed'] = np.random.randint(low=0, high=60, size=len(df.index))
# Distance in miles (speed * 0.5 hours)
df['distance'] = df['speed'] * 0.25 

df.reset_index(inplace=True)
df2 = df.melt (id_vars = 'index')
df3 = df2.resample('d', on='index').mean()

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    IIUC:

    >>> df.groupby(df.index.date).mean()
                    speed   distance
    2015-01-01  29.562500   7.390625
    2015-01-02  31.885417   7.971354
    2015-01-03  30.895833   7.723958
    2015-01-04  30.489583   7.622396
    2015-01-05  28.500000   7.125000
    ...               ...        ...
    2015-12-27  28.552083   7.138021
    2015-12-28  29.437500   7.359375
    2015-12-29  29.479167   7.369792
    2015-12-30  28.864583   7.216146
    2015-12-31  48.000000  12.000000
    
    [365 rows x 2 columns]
    

    【讨论】:

    • 谢谢,但是在处理具有不同时间频率的变量时,这是否也有效?
    • 是的。该组是从日期部分创建的。即使一天有 86400 个值 (freq='S') 或只有 2 个 (freq='12H'),此代码也应该有效。
    • 真的很抱歉,但我没有很好地解释我的问题:我想在 df3 上使用 resample 方法。我将用一个更好地说明我的问题的数据框提出问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2013-12-05
    • 2013-01-13
    相关资源
    最近更新 更多