带有 MultiIndexing 的 Pandas 数据框中的 Groupby
Posted
技术标签:
【中文标题】带有 MultiIndexing 的 Pandas 数据框中的 Groupby【英文标题】:Groupby In Pandas Dataframe with MultiIndexing 【发布时间】: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
。任何人都可以帮助解决这个问题!
谢谢
【问题讨论】:
【参考方案1】:试试这个:
new_df.groupby(('name','name'))
【讨论】:
谢谢它的工作!只需要任何其他可以用于更多此类嵌套的替代方法。所以我不必键入 ('name','name') 因为嵌套可能会很长 最上面的列是否总是被称为name
?还是将所有嵌套都称为name
?
对于列name
和transactionCount
,我们有共同的索引为summary
试试这个:df.iloc[:, df.columns.get_loc('name').argmax()]
是的!感谢您的时间..希望在答案中给出解决方案,它适用于给定的场景【参考方案2】:
此外,您可以按数据框列切片进行分组:
new_df.groupby(new_df.columns[0])
【讨论】:
以上是关于带有 MultiIndexing 的 Pandas 数据框中的 Groupby的主要内容,如果未能解决你的问题,请参考以下文章