【问题标题】:take a conditional mean in pandas在 pandas 中取条件均值
【发布时间】:2021-12-19 13:58:37
【问题描述】:

我有一个这样的数据集:

我想分别取 WFR=1 和 WFR=0 的 LCR 平均值,例如在 2018 年我有 4 个 WFR=0 所以取 LCR 的平均值,对于 WFR=1 我刚刚一。任何想法?谢谢

【问题讨论】:

  • 您可以将数据粘贴为文本并格式化为代码吗?使复制粘贴图像变得困难

标签: python pandas dataframe mean


【解决方案1】:

您可以按年份和 WFR 分组。这将创建数据集中存在的每个组合。如果所有条件都不在您的数据框中,您可以创建一个包含所有条件的基础数据框并与之合并。

df = data_new4.groupby(['CLOSDATE_year', 'WFR'])['LCR'].mean()

要绘制数据,您可以使用 seaborn 库。

import seaborn as sns

sns.lineplot(data=df, hue='WFR', x='CLOSDATE_year', y='LCR')

【讨论】:

  • 如何根据不同年份的 WFR(0 或 1)绘制这些 LCR(LCR 的平均值)?我的意思是一个图中有 2 个折线图
  • 我添加了代码让您能够绘制数据。请您投票并接受我的回答。
【解决方案2】:

试试groupby:

>>> data.groupby(["CLOSDATE_year", "WFR"])["LCR"].mean()

CLOSDATE_year  WFR
2011           1      268.750000
2012           1      235.533333
2018           0      192.775000
               1      186.000000
Name: LCR, dtype: float64

【讨论】:

  • 我可以在那里为 LCR 的平均值添加一个名称吗?因为该列没有名称
  • 这将返回一个名为 LCR 的系列。查看输出的最后一行。如果你想要一个DataFrame,你可以做data.groupby(["CLOSDATE_year", "WFR"])["LCR"].mean().reset_index()
猜你喜欢
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
相关资源
最近更新 更多