如何将类方法名作为参数传入以调用DataFrame对应方法?
解决方法
你之前的写法错误在于,无法直接通过字符串变量用点语法访问对象的方法。要实现通过方法名字符串调用对应方法,需要用getattr()函数来获取对象的方法属性,然后再调用它。
正确实现代码
import io import pandas as pd writer = io.BytesIO() data = [{"createdAt": 2021, "price": 10}, {"createdAt": 2022, "price": 20} ] # 定义调用函数 def call_df_method(method_name): df = pd.DataFrame(data) # 获取对应方法,然后传入参数调用 getattr(df, method_name)(writer, header=True, index=False) # 调用to_csv方法 call_df_method('to_csv')
用lambda简化的写法
如果坚持用lambda实现,也可以这样写:
f = lambda x: getattr(pd.DataFrame(data), x)(writer, header=True, index=False) f('to_csv')
额外提示
- 传入的方法名字符串要完全匹配DataFrame的方法名,比如
to_excel、to_json等其他导出方法也能通过这种方式调用 header参数规范写法是传布尔值True/False,而非字符串"true",pandas虽能兼容字符串,但用布尔值更符合官方文档要求
内容的提问来源于stack exchange,提问作者Zin Yosrim
相关产品推荐
相关产品推荐

