[英]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
总结列ColA
、 ColB
、 ColC
。 但是 ColA 的总结ColA
是max
并且ColB
和ColC
列是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
这里的挑战是列名( ColB
和ColC
是动态的)。 此外,我可以有 3 列或 1 列,而不是 2 列,我需要mean
(或max
)。 因此,我需要将几列组合在一起以获取mean
或max
。
理想的解决方案是如果我能做这样的事情:
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.