我正在使用 Pandas 使用以下代码将一些数据导出到 Excel。数据只不过是某种类型的列表。在这个列表中,其中一项又是一个列表(位置)。请查看屏幕截图(当我展开其中一项列表项时,如下所示)。
现在使用Pandas将数据导出到xlst,请参见下面的屏幕截图。所有位置都将导出到一行,并以逗号分隔。有没有办法让逗号分隔的列的行更大,在逗号后添加换行符。
例如,当我打开“位置”列时,我想看到类似的内容
EcoSystem Package ... Location
First Row Core\\ATF\\.....,
Core\\CoreServer\\....,
EchoNET\\UI\\.....
这是我必须导出数据的代码。请查看values参数,它是包含位置列表的某种类型的列表。
def create_excel_with_format(headers,values,full_file_name_with_path):
#Write to CSV in xlsx format with indentation.
df = pd.DataFrame(data=values,columns=headers)
df = df.set_axis(df.index*2 + 1).reindex(range(len(df)*2)) #Create a blank row after every row.
with pd.ExcelWriter(full_file_name_with_path) as writer:
df.to_excel(writer, index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
#font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_format = workbook.add_format({
'bold': False,
'border': False,
'text_wrap': True})
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
首先,评论
#Write to CSV in xlsx format
毫无意义:CSV是一种旨在数据交换的text格式文件,与Pandas或Python或任何其他能够处理由行和列组成的数据的工具相比,它与Excel的关系并不大.
然后 所有位置都将导出到一行,并用逗号分隔。 也是 false:单元格包含 Python 列表的字符串表示形式(用方括号括起来)。这并不奇怪,因为您要求 Pandas 导出列表。
一个简单的方法是对数据进行预处理。由于它由一个 Python 列表组成,因此在 Pandas 之外处理它可能会更好,但是您无法分辨出您的代码是什么(列表列表,字典列表,...)。
无论如何,预处理数据框列很容易:values
这应该足以将默认表示替换为一系列用换行符分隔的项目序列。但您可能必须增加 xlsx 文件中的行高度...
df['Location'] = df['Location'].apply(lambda ls: '\n'.join(ls))
的元素进行回车 join
,然后在 Excel 中放大足够的列宽,以便换行足够可见。例如,我选择 60 作为宽度,但您可以调整它。
"Location"
输出: