"FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead"所指的是哪些参数?

5

我从那段代码中得到了以下警告:

    file = r'.\changed_activities.xlsx'
    with pd.ExcelWriter(file,
                        engine='openpyxl',
                        mode='a',
                        if_sheet_exists='new') as writer:
        df.to_excel(writer, sheet_name=activity[0:30])


FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead. with pd.ExcelWriter(file,

我从文档中无法确定需要替换哪些参数,例如这些示例,但我不知道如何将其应用到我的代码中。

with pd.ExcelWriter(
    "path_to_file.xlsx",
    engine="openpyxl",
    mode="a",
    engine_kwargs={"keep_vba": True}
) as writer:
    df.to_excel(writer, sheet_name="Sheet2") 

也许更开放的问题是:在一般情况下,我该如何/在哪里理解这样的东西?

2个回答

9

使用

pd.ExcelWriter('out.xlsx', engine='xlsxwriter', engine_kwargs={'options':{'strings_to_urls': False}})

与其

pd.ExcelWriter('out.xlsx', engine='xlsxwriter', options={'strings_to_urls': False}})

6

遗憾的是,从文档中无法推断出警告触发的原因。至少目前的措辞没有解释清楚。

如果我们查看pd.ExcelWriter源代码

def __new__(
        cls,
        path: FilePath | WriteExcelBuffer | ExcelWriter,
        engine: str | None = None,
        date_format: str | None = None,
        datetime_format: str | None = None,
        mode: str = "w",
        storage_options: StorageOptions = None,
        if_sheet_exists: Literal["error", "new", "replace", "overlay"] | None = None,
        engine_kwargs: dict | None = None,
        **kwargs,
    ):
        if kwargs:
            if engine_kwargs is not None:
                raise ValueError("Cannot use both engine_kwargs and **kwargs")
            warnings.warn(
                "Use of **kwargs is deprecated, use engine_kwargs instead.",
                FutureWarning,
                stacklevel=find_stack_level(),
            )

任何作为 pd.ExcelWriter 关键字参数传递的参数,而在 __new__ 中没有指定的参数都将触发条件 if kwargs

对于您的情况,您应该将参数 sheet_name 移动到 engine_kwargs 字典中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接