持续更新
列名
对 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])
但是一个经常碰到的场景是我们传递了一个匿名函数,结果会变成这样:
究其根本,是因为 lambda
函数的 __name__
属性是 <lambda>
,这使得它们难以识别。
如何解决呢?我以前常用的一个方法是对列名做 rename
操作,将匿名函数的列名给替换掉,或者干脆定义一个函数(那样虽然有了函数名,但是不 PythonIC
)。
现在有一个新的办法,可以两者兼顾。传递一个 (name, function)
元祖的列表,每个元祖的第一个元素将作为 DataFrame
的列名。