pandas - 如何使用 pandas 数据框计算列的平均脉冲计数?

标签 pandas dataframe

这段代码看起来真的很愚蠢,但这是我一整天都在处理的问题的基本表示 - 我有 3 列,类型,日期和月份。我想按天计算狗/猫的数量,然后计算一个月内的平均值。

import numpy as np
import pandas as pd

data = {'Type':['Dog', 'Cat', 'Cat', 'Cat', 'Dog', 'Dog', 'Dog', 'Cat'], 'Day':[1, 1, 2, 2, 3, 3, 4, 4], 'Month': [1, 1, 1, 1, 2, 2, 2, 2]}
newDF = pd.DataFrame(data)

这将创建一个如下所示的数据框:

Type|Day|Month
---------
Dog|1|1
Cat|1|1
Cat|2|1
Cat|2|1
Dog|3|2
Dog|3|2
Dog|4|2
Cat|4|2

我在这里想做的是创建一个下表来显示这一点:

Type | Month1 | Month2
------------------------

Dog  |   1    |   1.5

Cat  |   1.5  |    1

所以基本上,我只想使用数据透视表或 groupby 的某种组合来创建一个包含每天猫/狗数量的数据透视表,然后在一个月内平均。由于某种原因,我就是无法弄清楚。有对 Pandas 足够聪明的人可以帮忙吗?谢谢!

最佳答案

两个groupbys + unstack

(newDF.groupby(['Type', 'Day', 'Month']).size()
      .groupby(level=[0,2]).mean()
      .unstack()
      .add_prefix('Month').rename_axis(None, 1))

输出:

      Month1  Month2
Type                
Cat      1.5     1.0
Dog      1.0     1.5

关于pandas - 如何使用 pandas 数据框计算列的平均脉冲计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52544758/

相关文章:

python - 将 pandas 列名称从蛇形命名法转换为驼峰式命名法

python - 将系列作为行应用于所有行中具有相同系列的 Pandas 数据框

python - 根据下一个值更新 Pandas 数据框

html - R : Add CSS color coding in a HTML table

python - 选择 pandas DataFrame 中第一行的值

python - Pandas 错误 "Can only use .str accessor with string values"

python pandas 多级索引 - 添加新列

Python加速列表中的元素

python - 在 Pandas 数据框中获得最小的一行

python Pandas : accessing datetime series for currency conversion