python - 按 pandas 数据框分组的平均值

标签 python pandas dataframe group-by pandas-groupby

我需要计算列持续时间和公里数的每日平均值 值 ==1 且值 = 0 的行。

df
Out[20]: 
                          Date duration km   value
0   2015-03-28 09:07:00.800001    0      0    0
1   2015-03-28 09:36:01.819998    1      2    1
2   2015-03-30 09:36:06.839997    1      3    1 
3   2015-03-30 09:37:27.659997    nan    5    0 
4   2015-04-22 09:51:40.440003    3      7    0
5   2015-04-23 10:15:25.080002    0      nan  1

如何修改此解决方案以获得持续时间_value0、持续时间_value1、km_value0 和 km_value1 的平均值?

df = df.set_index('Date').groupby(pd.Grouper(freq='d')).mean().dropna(how='all')
print (df)
            duration   km
Date                     
2015-03-28       0.5  1.0
2015-03-30       1.5  4.0
2015-04-22       3.0  7.0
2015-04-23       0.0  0.0

最佳答案

我相信按日期进行分组应该可以做到。 调用dfGroupBy.mean,然后调用df.reset_index以获得所需的输出:

In [713]: df.set_index('Date')\
           .groupby([pd.Grouper(freq='d'), 'value'])\
           .mean().reset_index(1, drop=True)
Out[713]: 
            duration   km
Date                     
2015-03-28       0.0  0.0
2015-03-28       1.0  2.0
2015-03-30       NaN  5.0
2015-03-30       1.0  3.0
2015-04-22       3.0  7.0
2015-04-23       0.0  NaN

关于python - 按 pandas 数据框分组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45839539/

相关文章:

python - 如何在没有索引的 Pandas 中转置数据框?

python - 使用 `[data2]` 和 `[[data2]]` 与 `groupby` 有什么区别

Python - 字符串中的单词影响结果

python - 在Django模板中以另一条记录的字段内容为标签显示未知数量的字段

python - pygame 敌人朝向玩家的二维运动,如何计算 x 和 y 速度?

python - 创建一个新的数据框,每个值仅包含 1 行

python - 从 groupby 返回列表的最有效方法

python - BaggingClassifier 在不同的执行中给出相同的结果

python - 如何从动态列数中找到最大值

python - 处理 xyz 数据的最佳方法