将字典保存为 .XLSX 文件

3
使用Python + Pandas,有没有一种快速简便的方法将一个字典(由文件名作为键和多列数据作为值组成)保存到.XLSX文件中?经过一些研究,我尝试使用以下代码将其转换为Pandas DataFrame(因为我知道可以从Pandas DataFrame写入.XLSX文件)。请参考下面的代码:
import pandas as pd
import glob
f_list = glob.glob("C:\\Users\\me\\dt\\xx\\*.xlsx")

sheets = {f: pd.read_excel(f) for f in f_list}
new_df = pd.DataFrame.from_dict(sheets, orient = "index")
new_df.to_excel("ALL_RUCDR_DATA.xlsx")

但我遇到了这个错误:

TypeError: 在write()中不支持类型(类'pandas.core.frame.DataFrame')。

我知道它成功创建了字典,似乎也创建了DataFrame,但为什么不会创建文件呢?


我无法复制这种行为。你使用的 pandas 版本是什么? - mechanical_meat
你能否给出一个简单的示例字典来演示这个方法,例如 sheets = {"a": pd.DataFrame([[1]], columns=["A"]), "b": pd.DataFrame([[2]], columns=["B"])}?我认为这个 from_dict 方法并不是你想象中的那样... - Andy Hayden
1个回答

3

文档建议您使用以下方法执行此操作:

with pd.ExcelWriter('path_to_file.xlsx') as writer:
    for (sheet_name, df) in sheets.items():
        df.to_excel(writer, sheet_name=sheet_name)

错误发生在对一个DataFrame字典运行from_dict时,创建了一个奇怪的DataFrame,其中每个元素都是一个DataFrame:
In [11]: sheets = {"a": pd.DataFrame([[1]], columns=["A"]), "b": pd.DataFrame([[2], [3]], columns=["B"])}

In [12]: pd.DataFrame.from_dict(sheets, orient='index')
Out[12]:
                0
b     B
0  2
1  3
a          A
0  1

In [13]: pd.DataFrame.from_dict(sheets, orient='index').applymap(type)
Out[13]:
                                       0
b  <class 'pandas.core.frame.DataFrame'>
a  <class 'pandas.core.frame.DataFrame'>

这不会映射到Excel表格,因为它期望元素为单个值(例如int/float/string)。

如果您想将字典中的数据合并/连接/拼接到单个文件中,请查看文档中的合并部分(将其视为pandas DataFrames而非电子表格)。


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