【问题标题】:Pivot table with count if带有计数的数据透视表 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 的数据框

标签: python pandas dataframe pandas-groupby pivot-table


【解决方案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)?
猜你喜欢
  • 2018-05-31
  • 2021-08-19
  • 2018-09-27
  • 2012-11-05
  • 2016-10-20
  • 2012-07-13
  • 1970-01-01
  • 2022-01-05
相关资源
最近更新 更多