我正在从事机械工程项目。对于以下代码,用户输入其压缩机具有的气缸数。然后,使用正确的列数创建一个数据框,并将其作为CSV文件导出到Excel。
输出的数据框看起来就像我想要的那样,如第一个链接中所示,但是在Excel中打开时,它看起来像第二个链接中的图像: 1。my dataframe
为什么我的数据框无法正确导出到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')
答案 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,但请注意,解决方案的后一部分确实会删除数据。