如何获取传入自定义函数的所有dataframe参数名称用于reduce左连接操作
解决方案
你代码里的*args本身就是所有传入函数的参数按顺序组成的元组,直接替换掉示例里的all_dfs即可正常运行。你可以额外添加参数校验逻辑,避免传入非DataFrame类型的参数导致报错。
修改后的完整代码如下:
import pandas as pd from functools import reduce def myfunc(*args): # 可选参数校验,保证入参合法性 for df in args: if not isinstance(df, pd.DataFrame): raise TypeError("所有入参必须为pandas.DataFrame类型") result = reduce( lambda left, right: pd.merge(left, right, on=["p_key"], how="left"), args ) return result
调用示例
# 构造测试数据 df1 = pd.DataFrame({"p_key": [1,2,3], "col1": ["a","b","c"]}) df2 = pd.DataFrame({"p_key": [1,2,4], "col2": ["d","e","f"]}) df3 = pd.DataFrame({"p_key": [1,3,4], "col3": ["g","h","i"]}) # 传入任意数量带p_key字段的DataFrame即可完成批量左连接 merged_df = myfunc(df1, df2, df3)
内容的提问来源于stack exchange,提问作者user14128401
相关产品推荐
相关产品推荐

