myr*_*ich 6 python pandas pandas.excelwriter
我从该代码中得到以下警告:
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,
Run Code Online (Sandbox Code Playgroud)
我似乎无法从文档中读到我需要替换哪些参数?例如,这些示例是这样的,但我不知道它如何转化为我的代码。
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")
Run Code Online (Sandbox Code Playgroud)
也许在一个更开放的问题中:在一般情况下我如何/在哪里可以理解类似的事情?
Sup*_*jee 10
使用
pd.ExcelWriter('out.xlsx', engine='xlsxwriter', engine_kwargs={'options':{'strings_to_urls': False}})
Run Code Online (Sandbox Code Playgroud)
代替
pd.ExcelWriter('out.xlsx', engine='xlsxwriter', options={'strings_to_urls': False}})
Run Code Online (Sandbox Code Playgroud)
不幸的是,无法从文档中推断出这一点(至少不能以当前的措辞方式),因为它没有解释触发警告的原因。
如果我们看一下源代码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(),
)
Run Code Online (Sandbox Code Playgroud)
传递到的任何未指定为 的参数的关键字参数pd.ExcelWriter都将触发__new__该if kwargs条件。
就你而言,你应该将sheet_name参数移至字典中engine_kwargs。