繁体   English   中英

对不同的列采取不同的功能

[英]Taking Different Functions for Different Columns

我有以下数据集。

df = pd.DataFrame({'x': ['A','A','A','A','A','A','A','A','A','A',
                         'B','B','B','B','B','B','B','B','B','B'],
                   'ColA': [1,2,3,4,5,6,7,8,9,10,
                         1,2,3,4,5,6,7,8,9,10],
                   'ColB': np.random.randint(0,100,20),
                   'ColC': np.random.randint(0,100,20)})

我想通过列x总结列ColAColBColC 但是 ColA 的总结ColAmax并且ColBColC列是mean 预期的 output 如下:

summarization = df.groupby('x').agg({'ColA':'max', 'ColB':'mean', 'ColC':'mean'})
print(summarization)



ColA  ColB  ColC
x                  
A    10  52.5  54.9
B    10  64.1  51.0

这里的挑战是列名( ColBColC是动态的)。 此外,我可以有 3 列或 1 列,而不是 2 列,我需要mean (或max )。 因此,我需要将几列组合在一起以获取meanmax

理想的解决方案是如果我能做这样的事情:

df.groupby('x').agg({'ColA':'max', ['ColB','ColC']:'mean'})

但不幸的是agg function 没有这个功能。

有人可以告诉我如何在 pandas 中做到这一点吗?

谢谢!

使用agg

summarization = df.groupby('x').agg({'ColA':'max', 'ColB':'mean', 'ColC':'mean'})

Output:

>>> summarization
   ColA  ColB  ColC
x                  
A    10  57.2  54.8
B    10  44.1  52.2

>>> summarization.loc['A', 'ColB']
57.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM