pandas里关于groupby的一些冷知识

在处理DataFrame时,当使用匿名函数进行聚合操作,由于lambda函数的__name__属性为'<lambda>',导致列名不易识别。为了解决这个问题,可以采取传递(name, function)元组的方式,将自定义的列名与函数结合,既能保持Python的简洁性,又能清晰地标识列名。这种方法允许在 agg 方法中直接指定列名,提高代码可读性。
摘要由CSDN通过智能技术生成

持续更新

列名

agg 传递的函数或者函数名的列表,你会获得一个列名是这些函数名的 DataFrame

tips = pd.read_csv('examples/tips.csv')
grouped = tips.groupby(['day', 'smoker'])
grouped_pct = grouped['tip_pct']
grouped_pct.agg(['mean', 'std', peak_to_peak])

图片1
但是一个经常碰到的场景是我们传递了一个匿名函数,结果会变成这样:
图片2
究其根本,是因为 lambda 函数的 __name__ 属性是 <lambda>,这使得它们难以识别。

如何解决呢?我以前常用的一个方法是对列名做 rename 操作,将匿名函数的列名给替换掉,或者干脆定义一个函数(那样虽然有了函数名,但是不 PythonIC )。

现在有一个新的办法,可以两者兼顾。传递一个 (name, function) 元祖的列表,每个元祖的第一个元素将作为 DataFrame 的列名。

图片3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值