【问题标题】:Mean over one column based on time period + conditional of another column基于时间段的一列的平均值+另一列的条件
【发布时间】:2019-09-06 12:47:16
【问题描述】:

我相信我的问题真的很简单,必须有一个非常简单的方法来解决这个问题,但是由于我对 Python 还很陌生,我无法自己解决。

我将此数据框作为我所面临问题的一​​个更简单的示例。我需要的是每 10 分钟计算考虑点的平均速度,这些点由“状态”列表示,考虑 1,不考虑 0。因此,我希望创建一个每 10 分钟包含 6 个平均值的数据框,但是,平均值仅与考虑的点相关。

            Timestamp      Category  ...      Status           Quantity
0     2013-08-14 22:00:00         1  ...          1               1
1     2013-08-14 22:00:01         1  ...          1               1
2     2013-08-14 22:00:02         1  ...          0               1.1
3     2013-08-14 22:00:03         1  ...          1               1.2
4     2013-08-14 22:00:04         1  ...          1               1.2
5     2013-08-14 22:00:05         1  ...          0               1.2
6     2013-08-14 22:00:06         1  ...          1               1.2
7     2013-08-14 22:00:07         1  ...          0               1.2
8     2013-08-14 22:00:08         1  ...          1               1.2

35999 2013-08-23 22:59:59         0  ...          1               2.3

希望我能做到简洁准确。非常感谢您在这方面的帮助!

【问题讨论】:

    标签: python pandas dataframe timestamp


    【解决方案1】:

    我相信您需要先通过DataFrame.queryboolean indexing 过滤,然后通过DataFrame.resamplemean 重新采样:

    df['Timestamp'] = pd.to_datetime(df['Timestamp'])
    
    df1=df.query("Status==1").resample('10Min',on='Timestamp')['Quantity'].mean().reset_index()
    print (df1)
                   Timestamp  Quantity
    0    2013-08-14 22:00:00  1.133333
    1    2013-08-14 22:10:00       NaN
    2    2013-08-14 22:20:00       NaN
    3    2013-08-14 22:30:00       NaN
    4    2013-08-14 22:40:00       NaN
                     ...       ...
    1297 2013-08-23 22:10:00       NaN
    1298 2013-08-23 22:20:00       NaN
    1299 2013-08-23 22:30:00       NaN
    1300 2013-08-23 22:40:00       NaN
    1301 2013-08-23 22:50:00  2.300000
    
    [1302 rows x 2 columns]
    

    类似的:

    df1 = df[df["Status"] == 1].resample('10Min', on='Timestamp')['Quantity'].mean()
    

    【讨论】:

    • 但就我而言,我正在寻找的是计算“数量”列的平均值
    猜你喜欢
    • 1970-01-01
    • 2017-09-02
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2021-08-18
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多