【问题标题】:Groupby In Pandas Dataframe with MultiIndexing带有 MultiIndexing 的 Pandas 数据框中的 Groupby
【发布时间】:2022-01-18 01:22:51
【问题描述】:

PS:GroupBy 的列为name

我尝试使用 MultiIndexing 创建 DataFrame:

import pandas as pd

df = [ [ 'las_00', '6', '3', '3', 'a', '1.03', '1.11', '1.11' ],
       [ 'las_01', '6', '3', '3', 'b', '1.03', '1.11', '1.11' ],
       [ 'las_02', '6', '3', '3', 'c', '1.03', '1.11', '1.11' ],
       [ 'las_03', '6', '3', '3', 'a', '1.03', '1.11', '1.11' ],
       [ 'las_03', '6', '3', '3', 'b', '1.03', '1.11', '1.11' ]
    ]


new_df = pd.DataFrame( df , columns = [ 'name, name', 'transactionCount, totalCount', 'transactionCount, passCount', 'transactionCount, failCount', 'status, failPerc', 'status, mean',
                    'status, perc90', 'status, max' ] )


a = new_df.columns.str.split( ', ', expand=True ).values

new_df.columns = pd.MultiIndex.from_tuples( [ ( ' ', x[ 0 ] ) if pd.isnull( x[ 1 ] ) else x for x in a])


结果数据框是:

     name               transactionCount                       status
     name       totalCount passCount failCount failPerc  mean perc90   max
0  las_00                6         3         3        a  1.03   1.11  1.11
1  las_01                6         3         3        b  1.03   1.11  1.11
2  las_02                6         3         3        c  1.03   1.11  1.11
3  las_03                6         3         3        a  1.03   1.11  1.11
4  las_03                6         3         3        b  1.03   1.11  1.11

现在我想使用带有名称的 GroupBy 我尝试使用 level,但不知道如何使用列 name。任何人都可以帮助解决这个问题! 谢谢

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    试试这个:

    new_df.groupby(('name','name'))
    

    【讨论】:

    • 谢谢它的工作!只需要任何其他可以用于更多此类嵌套的替代方法。所以我不必键入 ('name','name') 因为嵌套可能会很长
    • 最上面的列是否总是被称为name?还是将所有嵌套都称为name
    • 对于列nametransactionCount,我们有共同的索引为summary
    • 试试这个:df.iloc[:, df.columns.get_loc('name').argmax()]
    • 是的!感谢您的时间..希望在答案中给出解决方案,它适用于给定的场景
    【解决方案2】:

    此外,您可以按数据框列切片进行分组:

    new_df.groupby(new_df.columns[0])
    

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 2018-01-29
      • 2016-05-24
      • 2016-03-22
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 2017-01-01
      相关资源
      最近更新 更多