gpt4 book ai didi

python - 按 Pandas 中的多个标准分组

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:34 24 4
gpt4 key购买 nike

我有一个像这样的 pandas 数据结构:

>>> df
Benny Daniel Doris Eric Jack Zoe
Age 75 30 95 25 28 23
Salary 2000 9000 100000 10000 12000 20000

我想找到几个不同组的平均年龄和薪水,其中每个组都是列的子集,并且它们可能重叠,例如这本字典:

{'Parrot lovers': ['Doris', 'Benny'], 'Tea Drinkers': ['Doris', 'Zoe'],\
'Maintainance': ['Benny', 'Jack'], 'Coffee Drinkers': ['Benny', 'Eric'],\
'Senior Management': ['Doris', 'Zoe', 'Jack']}

我如何设计一个可以执行此操作的 groupby 函数?

最佳答案

这是我如何设置问题...

import StringIO
import pandas as pd

df = """index Benny Daniel Doris Eric Jack Zoe
Age 75 30 95 25 28 23
Salary 2000 9000 100000 10000 12000 20000"""
df = pd.read_csv(StringIO.StringIO(df),sep="\s+").set_index('index')
d = {'Parrot lovers': ['Doris', 'Benny'], 'Tea Drinkers': ['Doris', 'Zoe'],\
'Maintainance': ['Benny', 'Jack'], 'Coffee Drinkers': ['Benny', 'Eric'],\
'Senior Management': ['Doris', 'Zoe', 'Jack']}

对于解决方案,只需使用 .loc 并遍历字典...

averages = {k:df.loc[:,v].mean(axis=1) for k,v in d.iteritems()}
print pd.DataFrame(averages).T #gives the nice printout...

index Age Salary
Coffee Drinkers 50.000000 6000
Maintainance 51.500000 7000
Parrot lovers 85.000000 51000
Senior Management 48.666667 44000
Tea Drinkers 59.000000 60000

关于python - 按 Pandas 中的多个标准分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com