导出到 CSV 时,Pandas 在每个逗号分隔的列表项上换行

问题描述 投票:0回答:2

我正在使用 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)
python pandas export-to-csv
2个回答
0
投票

首先,评论

#Write to CSV in xlsx format
毫无意义:CSV是一种旨在数据交换的text格式文件,与Pandas或Python或任何其他能够处理由行和列组成的数据的工具相比,它与Excel的关系并不大.

然后 所有位置都将导出到一行,并用逗号分隔。 也是 false:单元格包含 Python 列表的字符串表示形式(用方括号括起来)。这并不奇怪,因为您要求 Pandas 导出列表。

一个简单的方法是对数据进行预处理。由于它由一个 Python 列表组成,因此在 Pandas 之外处理它可能会更好,但是您无法分辨出您的代码是什么(列表列表,字典列表,...)。

无论如何,预处理数据框列很容易:

values

这应该足以将默认表示替换为一系列用换行符分隔的项目序列。但您可能必须增加 xlsx 文件中的行高度...


0
投票
df['Location'] = df['Location'].apply(lambda ls: '\n'.join(ls))

的元素进行回车 join

,然后在 Excel 中放大足够的列宽,以便换行足够可见。例如,我选择 60 作为宽度,但您可以调整它。
"Location"
输出:

© www.soinside.com 2019 - 2024. All rights reserved.