【问题标题】:DataFrame manipulation with groupby() function- filtering by specific data pointsata values使用 groupby() 函数进行 DataFrame 操作 - 按特定数据点数据值过滤
【发布时间】:2021-06-29 18:30:14
【问题描述】:

我有以下数据框:

df

我想按系列显示在管理职位上拥有和不拥有自己房屋的单身人数。我目前有以下代码:

df['housing'].groupby([df['marital'], df['job']]).value_counts()

但是,这目前正在计算每个工作和婚姻状况的房主/非房主数量。我只关心拥有管理职位的单身人士。

如何对结果系列应用过滤器,使其仅显示我感兴趣的数据?

【问题讨论】:

  • 欢迎来到 SO!提问时,请将示例数据粘贴为 pandas 数据框、字典或至少是原始数据,而不是链接到图片。
  • 这能回答你的问题吗? Conditional grouping
  • @SarahSawyer pd.DataFrame() 是最好的,但作为字典或打印输出也可以。查看这些页面以获取入门帮助:minimal reproducible exampleHow to Askhelp center
  • @k_n_c 谢谢,我是新手,所以我不确定如何输入数据框。它也很大
  • @SarahSawyer 这是最小可重现示例的“最小”部分。通常建议使用五到六行,除非需要更多行来重现错误或情况。

标签: python pandas dataframe group-by pandas-groupby


【解决方案1】:

试试query

df.query('job=="management" and marital=="single"')['housing'].value_counts()

或者你可以使用loc:

df.loc[df['job'].eq('management') & df['marital'].eq('single'),
       'housing'].value_counts()

注意如果您之后对数据进行切片,您的方法也可以工作:

(df['housing'].groupby([df['marital'], df['job']])
   .value_counts()
   .loc[('single','management')]
)

【讨论】:

  • @QuangHoang 可以用groupby/value_counts 解释一下.loc 中的元组是如何工作的吗?
  • @k_n_c 查看更多详细信息in the doc。简而言之,您可以使用元组对 MultiIndex 进行切片。
猜你喜欢
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
相关资源
最近更新 更多