python命名规范 dict_python-重命名Pandas聚合中的结果列(“ FutureWarning:不建议将dict与重命名一起使用”)...

使用groupby Other并返回一个Series重命名列

使用groupby Other方法执行聚合

重命名列

名称中允许有空格

允许您以任何选择的方式对返回的列进行排序

允许列之间的交互

返回单级索引而不是MultiIndex

去做这个:

创建传递给Other的自定义函数

此自定义函数作为数据帧传递给每个组

返回系列

系列的索引将是新列

创建虚假数据

df = pd.DataFrame({"User": ["user1", "user2", "user2", "user3", "user2", "user1", "user3"],

"Amount": [10.0, 5.0, 8.0, 10.5, 7.5, 8.0, 9],

'Score': [9, 1, 8, 7, 7, 6, 9]})

4b18b57bdb9e21e8af1df5b6da8e7c46.png

创建返回系列的自定义函数

my_agg内部的变量Other是一个DataFrame

def my_agg(x):

names = {

'Amount mean': x['Amount'].mean(),

'Amount std': x['Amount'].std(),

'Amount range': x['Amount'].max() - x['Amount'].min(),

'Score Max': x['Score'].max(),

'Score Sum': x['Score'].sum(),

'Amount Score Sum': (x['Amount'] * x['Score']).sum()}

return pd.Series(names, index=['Amount range', 'Amount std', 'Amount mean',

'Score Sum', 'Score Max', 'Amount Score Sum'])

将此自定义函数传递给groupby Other方法

df.groupby('User').apply(my_agg)

a7d9b6a83ef453d21c8d3677ab9d3965.png

不利的一面是,此功能将比基于细胞的聚合的Other慢得多

将字典与groupby Other方法一起使用

由于字典的复杂性和某些模棱两可的性质,因此不再使用字典。 将来在github上正在进行有关如何改进此功能的讨论。在这里,您可以在groupby调用之后直接访问聚合列。 只需传递您希望应用的所有汇总功能的列表即可。

df.groupby('User')['Amount'].agg(['sum', 'count'])

输出量

sum count

User

user1 18.0 2

user2 20.5 3

user3 10.5 1

仍然可以使用字典为不同的列显式表示不同的聚合,例如此处是否存在另一个名为Other的数字列。

df = pd.DataFrame({"User": ["user1", "user2", "user2", "user3", "user2", "user1"],

"Amount": [10.0, 5.0, 8.0, 10.5, 7.5, 8.0],

'Other': [1,2,3,4,5,6]})

df.groupby('User').agg({'Amount' : ['sum', 'count'], 'Other':['max', 'std']})

输出量

Amount Other

sum count max std

User

user1 18.0 2 6 3.535534

user2 20.5 3 5 1.527525

user3 10.5 1 4 NaN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值