我目前正在尝试使用pandas函数tr8 pd.to_excel
从文件格式编写excel文件。但是,它写了excel文件,但是当在excel中打开时,我看不到完整的数据。我附上了tr8
output_file = pd.ExcelWriter('20131001103311.xlsx')
widths = [1, 8, 2, 4, 2, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 10, 1]
df = pd.read_fwf('20131001103311.tr8', widths=widths, header=True)
df.columns = ['TIP. REG.', 'COD. EST.', 'TIP. INF.', 'AGNO', 'DEL', 'ENE', 'OBS', 'FEB', 'OBS', 'MAR', 'OBS', 'ABR',
'OBS', 'MAY', 'OBS', 'JUN', 'OBS', 'JUL', 'OBS', 'AGO', 'OBS', 'SEP', 'OBS', 'OCT', 'OBS', 'NOV', 'OBS',
'DIC', 'OBS', 'ESP.', 'TIP. DATO']
df.to_excel(output_file, '20131001103311')
output_file.save()
答案 0 :(得分:2)
我将您的程序简化为2列数据进行测试:
import pandas as pd
output_file = pd.ExcelWriter('20131001103311.xlsx')
widths = [10, 10]
df = pd.read_fwf('20131001103311.tr8', widths=widths, header=True)
df.columns = ['TIP. REG.', 'COD. EST.']
df.to_excel(output_file, '20131001103311')
output_file.save()
我针对以下固定宽度格式fwf
文件运行它:
$ cat 20131001103311.tr8
TIP. REG. COD. EST.
1 1000
2 300
3 7000
4 600
5 12345
我没有得到任何执行错误,输出看起来应该是:
由于参数header=True
已传递给read_fwf
,因此缺少第一行数据。
所以它似乎不是pandas
问题。
我会查看固定宽度字段文件中的列。也许在阅读之后将其打印出来以查看您提供给df.columns
的列名是否都已正确解析。
更新:查看@jchavarro尝试上传的输入数据和输出文件的图像,看起来可能存在问题。至少Excel输出不会与DataFrame数据绑定。可能是由于重复的OBS
列。
更新2 :这是一个问题。我在GitHub and submitted a fix上提出了它。
更新3 :我为上述问题创建了一个修复程序,现在已经合并到pandas master分支中,并且应该作为0.13版本的一部分发布。