pandas方法链使用疑问:为什么无法链式调用get_dummies()函数?
报错根因
get_dummies() 是 pandas 库的顶层全局函数,不是 DataFrame 类的内置实例方法,两种写法的差异本质是调用对象不同:
- 链式写法中,
drop(columns=['sepal_length'])执行后返回的是 DataFrame 对象,该对象本身没有内置get_dummies方法,调用不存在的方法就会触发报错。 - 拆分写法中调用的是
pd.get_dummies(),即 pandas 模块下的全局工具函数,将预处理好的 DataFrame 作为入参传入,完全符合该函数的调用规则,因此可以正常运行。
如果你需要保持方法链的编码风格,可以通过 DataFrame 内置的 pipe 方法适配全局函数,修改后的链式写法如下:
import pandas as pd df = (pd .read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv') .drop(columns=['sepal_length']) .pipe(pd.get_dummies) )
内容的提问来源于stack exchange,提问作者Nivel
相关产品推荐
相关产品推荐

