带有计数的数据透视表 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Redshift (PostgreSQL) 和计数的数据透视表