将数据框导出到csv时出现问题

时间:2020-09-25 12:05:55

标签: python-3.x pandas dataframe jupyter-notebook export-to-csv

我正在从事机械工程项目。对于以下代码,用户输入其压缩机具有的气缸数。然后,使用正确的列数创建一个数据框,并将其作为CSV文件导出到Excel。

输出的数据框看起来就像我想要的那样,如第一个链接中所示,但是在Excel中打开时,它看起来像第二个链接中的图像: 1。my dataframe

2。Excel Table

为什么我的数据框无法正确导出到Excel?如何在Excel中获取相同的数据框?


import pandas as pd 
CylinderNo=int(input('Enter CylinderNo: '))  
new_number=CylinderNo*3
list1=[]
for i in range(1,CylinderNo+1):
    for j in range(0,3):
        Cylinder_name=str('CylinderNo ')+str(i)
        list1.append(Cylinder_name)
    
df = pd.DataFrame(list1,columns =['Kurbel/Zylinder'])

list2=['Triebwerk', 'Packung','Ventile']*CylinderNo
Bauteil = {'Bauteil':  list2}
df2 = pd.DataFrame (Bauteil, columns = ['Bauteil'])
new=pd.concat([df, df2], axis=1)

list3=['Nan','Nan','Nan']*CylinderNo
Bewertung={'Bewertung':  list3}
df3 = pd.DataFrame (Bewertung, columns = ['Bewertung'])
new2=pd.concat([new, df3], axis=1)

Empfehlung={'Empfehlung':  list3}
df4 = pd.DataFrame (Empfehlung, columns = ['Empfehlung'])
new3=pd.concat([new2, df4], axis=1)

new3.set_index('Kurbel/Zylinder')
new3 = new3.set_index('Kurbel/Zylinder', append=True).swaplevel(0,1)

#export dataframe to csv
new3.to_csv('new3.csv')

1 个答案:

答案 0 :(得分:0)

为清楚起见,逗号分隔值(CSV)文件不是Excel格式类型或表格。这是一个分隔的文本文件,Excel可以像其他应用程序一样打开。

您要比较的只是演示。两个数据帧完全相同。对于multindex数据帧,Pandas打印输出不会重复索引值以确保在控制台或Jupyter等IDE上的可读性。但是,此类值不会仅从其表示形式的基础数据帧中删除。如果您对索引重新排序,您将看到此演示文稿发生了变化。完整的完整数据框是导出到CSV的内容。对于数据完整性而言,理想的情况是,您希望使用to_csv(可以设置索引)或其他语言和应用程序将用read_csv导出的完整数据集导入回Pandas。

从本质上讲,CSV是一种行业格式,用于存储和传输数据。考虑满足演示文稿的需要使用Excel电子表格,HTML降价或其他报告格式。因此,to_csv可能不是最佳方法。您可以尝试使用Python i / o写入方法with open('new.csv', 'w') as f手动构建文本文件,但这将是一个广泛的解决方法,另请参见@Jeff's answer here,但请注意,解决方案的后一部分确实会删除数据。