python – Pandas如何用read_fwf读取0填充数字?
发布时间:2020-12-20 11:42:18 所属栏目:Python 来源:网络整理
导读:我正在使用read_fwf来做明显的事情,但是pandas会从我们使用的数字字符串代码中删除左边填充的零,并将类型转换为int.对于我们必须使用的“xxxx.yyy”格式的各种代码也是如此,它将转换为float并切断前导零. 这对于代码长度相同的列来说不是问题,但是它们中的许
我正在使用read_fwf来做明显的事情,但是pandas会从我们使用的数字字符串代码中删除左边填充的零,并将类型转换为int.对于我们必须使用的“xxxx.yyy”格式的各种代码也是如此,它将转换为float并切断前导零.
这对于代码长度相同的列来说不是问题,但是它们中的许多长度不同(即:001234和0001234),所以我们无法可靠地填充数据 – 一旦pandas将零解析掉它们’迷路了. 我知道read_fwf的dtype即将进行下一次重大更新,但我真的希望现在有办法阻止大熊猫破坏我的数据.有人知道吗? 示例文件(test.fwf): 0001234 000.1234 001234 123.4567 00001234 345.6789 0005678 678.1234 0005678 000.1200 0005678 012.2301 0005678 234.5678 testfwf.py: import pandas as pd df = pd.read_fwf('test.fwf',colspecs=[(0,8),(9,19)]) df.columns = ['code_a','code_b'] In[2]: from testfwf import df In[3]: df Out[3]: code_a code_b 0 1234 123.4567 1 1234 345.6789 2 5678 678.1234 3 5678 0.1200 4 5678 12.2301 5 5678 234.5678 解决方法
首先,你丢失了一行数据.设置header = None以指定没有标头.其次,您可以使用转换器指定列应该是一个字符串并防止剥离前导0:
In [96]: pd.read_fwf('test.fwf',header=None,converters={0:str,1:str}) Out[96]: 0 1 0 0001234 000.1234 1 001234 123.4567 2 00001234 345.6789 3 0005678 678.1234 4 0005678 000.1200 5 0005678 012.2301 6 0005678 234.5678 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |