【问题标题】:Is there any way to compare columns in df like this?有没有办法像这样比较 df 中的列?
【发布时间】:2021-12-06 17:47:12
【问题描述】:

我有一个 df,我想将 1 列与 df 中剩余的每一列进行比较,计算并计算比率。

import numpy as np
import pandas as pd

indices = (1,2,3,4,5,6)
col = ["gender", "under 15", "homework finishing"]

data = (["Female", True, "No"], ["Female", False, "Yes"], ["Male", True, "Yes"], ["Female", True, "No"],
       ["Male", True, "No"], ["Female", False, "Yes"])

df = pd.DataFrame(data, index = indices, columns = col)

我希望结果是:

最初,我尝试使用多索引但失败了。还是应该使用 groupby?

我想知道熊猫是否可以做到这一点?欢迎任何提示或帮助

【问题讨论】:

  • 听起来你可以使用groupby。几乎所有你能想到的关于表格的东西都可以在 pandas 中实现
  • 您能说得更具体些吗?谢谢

标签: python pandas dataframe group-by


【解决方案1】:

我不太确定您想如何划分它,因为您的第一列同时具有 GenderUnder 15 作为索引,并且值以某种方式在它们之间分成两半(它不加起来您的第一个表格示例)。

但是这种类似于你的例子:

>>> df.groupby(["gender", "homework finishing"]).size().unstack()

homework finishing  No  Yes
gender                     
Female               2    2
Male                 1    1
>>> df.groupby(["under 15", "homework finishing"]).size().unstack()

homework finishing   No  Yes
under 15                    
False               NaN  2.0
True                3.0  1.0

当然,您仍然需要添加百分比除法,但我相信您可以做到。

【讨论】:

  • 非常感谢,请问是否可以将“gender”和“under 15”设为2级索引?
  • 您应该可以将两个新表添加在一起
  • 我试过了,但我不再看到索引“under15”和“gender”了。我只看到真假,“女”,“男”
  • 我不太确定这将如何实现
猜你喜欢
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 2021-05-18
  • 2012-12-26
  • 2016-09-19
相关资源
最近更新 更多