【问题标题】:Compare against median of each column与每列的中位数进行比较
【发布时间】:2019-06-28 04:25:36
【问题描述】:

如何与 pandas 数据框中每列的中值进行比较,如果值大于中值,则结果为 true,如果值小于中值,则结果为 false?

现在我正在标准化,所以基本上与每列的 0(平均值)进行比较。想要一种方法对中位数做同样的事情。

【问题讨论】:

  • 添加你尝试过的代码

标签: pandas multiple-columns median operation


【解决方案1】:

我从您的问题中了解到,您想比较每列值与其列中位数

  1. .median() 查找列的中位数并保存在列中
  2. .apply(axis=1)axis=1 将每个值与值 median() 进行比较
df = pd.DataFrame(data={'a':[1,2,3,4,4,5],
                        'b':[1,2,3,3,3,3]})
# median of col a and col b is calculated and save in another column
df['median_a'] = df['a'].median()
df['median_b'] = df['b'].median()

# if col a value is greater than median_a then a_bool contains True else False
df['a_bool']  = df.apply(lambda  x: True if x['a']>x['median_a'] else False ,axis=1)
df['b_bool']  = df.apply(lambda  x: True if x['b']>x['median_b'] else False,axis=1)

希望能解决你的问题

【讨论】:

  • 我希望它与列无关,在这里您必须为列 a 和 b 预先定义中位数,而不是我正在寻找一种可以应用于数据框中所有列的列无关方法
  • 您可以通过列列表并循环执行所有这些操作来做到这一点
  • 用示例和预期输出更新您的问题,否则没有人能够正确回答您的问题
  • @tawab_shakeel 有没有什么方法可以在不创建均值列并使用 apply 的情况下获得相同的结果?
猜你喜欢
  • 1970-01-01
  • 2020-06-15
  • 2023-03-26
  • 1970-01-01
  • 2019-05-17
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
相关资源
最近更新 更多