获取Pandas groupby agg输出列



这是我的代码

import pandas as pd
df = pd.DataFrame()

df['country'] = ['UK', 'UK', 'USA', 'USA', 'USA']
df['name'] = ['United Kingdom', 'United Kingdom', 'United States', 'United States', 'United States']
df['year'] = [1, 2, 1, 2, 3]
df['x'] = [100, 125, 200, 225, 250]
print(df.groupby(['country', 'name']).agg({'x':['mean', 'count']}))
我得到的输出是
x      
mean count
country name                       
UK      United Kingdom  112.5     2
USA     United States   225.0     3

但是我需要一个结果作为行列表

[['UK','United Kingdom',112.5,2],...]

或列

[['UK', 'USA'],['United Kingdom','United States'],[112.5,225],[2,3]]

name列可以由任意数量的单词组成,例如Kingdom of The Netherlands。

谢谢

根据as_index=False参数将MultiIndex转换为列,然后将DataFrame转换为numpy数组,最后转换为list:

print(df.groupby(['country', 'name'], as_index=False).agg({'x':['mean', 'count']}).to_numpy().tolist())
[['UK', 'United Kingdom', 112.5, 2], ['USA', 'United States', 225.0, 3]]

第二个输出加上转置:

print(df.groupby(['country', 'name'], as_index=False).agg({'x':['mean', 'count']}).T.to_numpy().tolist())
[['UK', 'USA'], ['United Kingdom', 'United States'], [112.5, 225.0], [2, 3]]

最新更新