【问题标题】:Creating a new columns with maximum count of value in multiple columns在多列中创建具有最大值计数的新列
【发布时间】:2020-06-08 19:47:31
【问题描述】:

我有一个包含多个列的数据框,如下所示:

df = pd.DataFrame()
df ['Player'] = ['A','A','A','A','A','B','B','B','B','B',]
df ['Competition'] = ['x','x','y','y','y','x','y','z','y','y']
df ['Home'] = ['AB','EF','GH','AB','CF','EF','BD','BD','FG','CH']
df ['Away'] = ['CD','AB','AB','CF','AB','BD','BD','HF','BD','BD']

我想根据Home列和Away列中最高出现次数的球员、比赛和价值创建一个新列。假设我要创建的新列的名称是 Team。 我想要一个新的专栏如下:

所以它假设为每场比赛的每个球员分配一个团队。 谁能告诉我该怎么做? 非常感谢您的建议。

谢谢,

泽普。

【问题讨论】:

    标签: python pandas count pandas-groupby


    【解决方案1】:

    将自定义函数与GroupBy.applyDataFrame.stackSeries.modeSeries.iat 的第一个值一起使用:

    def f(x):
        x['Team'] = x[['Home','Away']].stack().mode().iat[0]
        return x
    

    另一个与Series.append类似的想法:

    def f(x):
        x['Team'] = x['Home'].append(x['Away']).mode().iat[0]
        return x
    

    df = df.groupby(['Player','Competition']).apply(f)
    print (df)
      Player Competition Home Away Team
    0      A           x   AB   CD   AB
    1      A           x   EF   AB   AB
    2      A           y   GH   AB   AB
    3      A           y   AB   CF   AB
    4      A           y   CF   AB   AB
    5      B           x   EF   BD   BD
    6      B           y   BD   BD   BD
    7      B           z   BD   HF   BD
    8      B           y   FG   BD   BD
    9      B           y   CH   BD   BD
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 2019-02-07
      • 2022-11-30
      相关资源
      最近更新 更多