【问题标题】:Count Y values for each X value - MultiIndex [duplicate]计算每个 X 值的 Y 值 - MultiIndex [重复]
【发布时间】:2021-07-01 10:37:04
【问题描述】:

我有这种df...

          Modules
X     Y   
1    1          A
     2          B
     45         C
2    13         A
     12         B
3    18         A
     16         B
     15         D

我想计算每个 X 值的 Y 值的数量并将其添加为一列,如下所示:

          Modules  Count 
X     Y   
1    1          A      3
     2          B      3
     45         C      3
2    13         A      2
     12         B      2
3    18         A      3
     16         B      3
     15         D      3

目前我已经尝试过:

df['Count']=df.index.get_level_values(0).value_counts()

这给了我一个 NaN 列表,然后我尝试了:

df['Count']=df.index.value_counts()

这显然给了我一个 1 的列表。

谁能帮帮我?

【问题讨论】:

  • 请使用df.to_dict() 并发布结果ehre,以便我们有复制/粘贴数据。
  • 这能回答你的问题吗? Pandas multi-index count occurrences
  • @AmitGupta 不,因为我只需要 X 的出现次数,无论 Y 值是多少。
  • @Andreas {'X': {0: 1, 1: 1, 2: 1, 3: 2, 4: 2, 5: 3, 6: 3, 7: 3}, ' Y':{0:1、1:1、2:45、3:13、4:12、5:18、6:16、7:15},'模块':{0:'A',1: 'B', 2: 'C', 3: 'A', 4: 'B', 5: 'A', 6: 'B', 7: 'D'}} 是你想要的吗?抱歉,我是 StackOverflow 的新手
  • 使用 Panda 的问题链接,而不是按 2 列分组,只按您感兴趣的那一列分组。那应该可以得到您正在寻找的结果正确吗?

标签: python pandas dataframe multi-index


【解决方案1】:

您可以分组并计算每个组的条目,因为您希望返回与原始长度相同的系列,您可以使用.transform(),它会做到这一点:

df['Count'] = df.groupby(['X'])['Modules'].transform('count')


   X   Y Modules  Count
0  1   1       A      3
1  1   1       B      3
2  1  45       C      3
3  2  13       A      2
4  2  12       B      2
5  3  18       A      3
6  3  16       B      3
7  3  15       D      3

【讨论】:

  • 抱歉没用。请问如何使我的示例复制/粘贴?我对 StackOverflow 很陌生,抱歉...
  • @Mop 您可以使用:df.to_dict(),它会返回您的数据字典。我们可以使用它来重新创建您的数据框。如果您不想发布完整数据,您可以像这样将行限制为:df.iloc[:10].to_dict() 到数据的前 10 行。
  • {'X': {0: 1, 1: 1, 2: 1, 3: 2, 4: 2, 5: 3, 6: 3, 7: 3}, 'Y' : {0: 1, 1: 1, 2: 45, 3: 13, 4: 12, 5: 18, 6: 16, 7: 15}, '模块': {0: 'A', 1: 'B ', 2: 'C', 3: 'A', 4: 'B', 5: 'A', 6: 'B', 7: 'D'}}
  • 是你想要的吗?
  • @Mop,是的,我调整了我的代码。
【解决方案2】:

试试这个

df.groupby(level=[0,1]).size()

你可以给列指定任何名称。

【讨论】:

  • 我试过了,但它只给出了 1 的列表。有时我忘记说的是在我的数据集中,同一个 X 的 Y 值不一样。抱歉,我是 StackOverflow 的新手
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 2012-04-21
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多