【问题标题】:Count values from different columns of a dataframe [duplicate]计算来自数据框不同列的值[重复]
【发布时间】:2021-12-13 14:57:31
【问题描述】:

假设我有以下数据框。

import pandas as pd

data = {
  'home': ['team1', 'team2', 'team3', 'team2'],
  'away': ['team2', 'team3', 'team1', 'team1']
 }
df = pd.DataFrame(data)

如何计算每个元素(团队)在两列中出现的次数? 预期结果是

team1    3
team2    3
team3    2

【问题讨论】:

  • df.stack().value_counts()。感觉像个骗子;我只是找不到类似的问题

标签: python pandas


【解决方案1】:

您可以连接列并使用.value_counts 方法:

out = pd.concat([df['home'], df['away']]).value_counts()

输出:

team1    3
team2    3
team3    2
dtype: int64

您还可以获取底层 numpy 数组 flatten 它,查找唯一值及其计数,将其包装在字典中(这是迄今为止最快的方法):

out = dict(np.array(np.unique(df.values.flatten(), return_counts=True)).T)

输出:

{'team1': 3, 'team2': 3, 'team3': 2}

【讨论】:

    【解决方案2】:

    可以通过以下方式获得所需的结果:

    count = df['home'].value_counts() + df['away'].value_counts()
    

    【讨论】:

      【解决方案3】:

      就像@sammywemmy 提到的,将DataFrame.stack 用于Series 并在Series.value_counts 中使用十个计数:

      df[['home', 'away']].stack().value_counts()
      

      【讨论】:

        猜你喜欢
        • 2023-01-20
        • 1970-01-01
        • 1970-01-01
        • 2019-10-12
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        • 2016-12-12
        • 1970-01-01
        相关资源
        最近更新 更多