【问题标题】:Dataframe dominant stats analysis using Pandas使用 Pandas 的数据框主导统计分析
【发布时间】:2017-07-12 20:57:12
【问题描述】:

我有一个包含几列的数据框。其中一列中的值是一个总和为 1 的百分比,例如 A 列。我想打印另一列 B 列中的值,以便这些值对应于 A 列中总计为 0.95 的最大值。

例如:

Column A        Column B
   A1             0.2
   A2             0.5
   A3             0.25
   A4             0.01
   A5             0.03
   A6             0.01

结果应该是

    A1
    A2 
    A3

因为B列中这些值的对应值总和为0.95

【问题讨论】:

  • 欢迎来到 SO。您能否发布您尝试的内容,因为这看起来像是对代码的请求,并且 SO 不会像这样运行

标签: python pandas numpy


【解决方案1】:

让我们将cumsum 与使用.loc 的布尔索引一起使用:

df.loc[df['Column B'].cumsum() <= .95,'Column A']

编辑:正如 hausdork 指出的那样,如果我们想用最大值来做,那么我们可以sort_values:

df.loc[df.sort_values(by='Column B', ascending=False)['Column B'].cumsum() <= .95,'Column A']

输出:

0    A1
1    A2
2    A3
Name: Column A, dtype: object

【讨论】:

  • 我们不需要先按 B 列对数据框进行排序吗?由于 OP 要求 A 列的最大值总和小于 0.95。
  • 非常感谢。这非常有用。另外一个评论是有什么方法可以防止列出行号、名称和数据类型。我尝试将其复制到数组并使用 list() 命令。这可行,但有更好的方法吗?
猜你喜欢
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 2020-10-13
  • 2014-04-18
相关资源
最近更新 更多