带有计数的数据透视表 if

Posted

技术标签:

【中文标题】带有计数的数据透视表 if【英文标题】:Pivot table with count if 【发布时间】:2021-06-04 01:36:24 【问题描述】:

我想计算该数字是否高于 0.1,然后按月-年对它们进行分组,以查看哪个月-年的天数最多,变化量超过 0.1。

我有一个像这样的 df,其中包含每日数据,但只显示月-年索引。

table = df.pivot_table(df, columns=['btc','bnb','eth','xmr','xrp'], aggfunc=df[df > 0.1].count())

print(table)

为什么不工作?

结果需要是这样的

【问题讨论】:

您的预期输出是什么?你想count 仅在每个month-year 的所有列中大于0.1 的值? 是的!然后显示索引为 groupby month-year 的数据框 【参考方案1】:

您可以stack 数据帧然后将堆叠帧与0.1 进行比较以创建布尔掩码,然后在level=0 上使用sum 来计算每个month-year 大于0.1 的值:

df.stack().gt(0.1).sum(level=0)

替代方法:

df[df > 0.1].stack().count(level=0)

编辑:如果您想计算每个month-year 每一列中大于0.1 的值:

df.gt(0.1).sum(level=0)

【讨论】:

惊人的帮助!是这样,但我还需要列 'btc','bnb','eth','xmr','xrp' 。这就是为什么我尝试使用 pivot_table 甚至 grouby 功能 @TiagoEmanuelPratas 你能用你想要的输出更新问题吗(可能只有一两行),以便更容易想象你想要什么? IIUC 我觉得你需要df.gt(0.1).sum(level=0)?

以上是关于带有计数的数据透视表 if的主要内容,如果未能解决你的问题,请参考以下文章

数据透视表计数不正确

Pandas 数据透视表值计数

使用 Redshift (PostgreSQL) 和计数的数据透视表

在 Python 中获取数据透视表列之间的差异

如何在具有过滤器的数据透视表(Excel for Mac)中获得不同的计数?

如何连接 Excel 数据透视表中的值,而不是求和或计数