pandas21 读csv文件read_fwf读固定宽度数据(详细 tcy)

读固定宽度数据 2018/12/27

目录:
第1部分:csv文本文件读写

    pandas 读csv文件read_csv(1.文本读写概要)https://mp.csdn.net/postedit/85289371
    pandas 读csv文件read_csv(2.read_csv参数介绍)https://mp.csdn.net/postedit/85289928
    pandas 读csv文件read_csv(3.dtypes指定列数据类型)https://mp.csdn.net/postedit/85290575
    pandas 读csv文件read_csv(4.to_csv文本数据写)https://mp.csdn.net/postedit/85290962
    pandas 读csv文件read_csv(5.文本数据读写实例)https://mp.csdn.net/postedit/85291123
    pandas 读csv文件read_csv(6.命名和使用列)https://mp.csdn.net/postedit/85291430
    pandas 读csv文件read_csv(7.索引)https://mp.csdn.net/postedit/85291658
    pandas 读csv文件read_csv(8.方言和分隔符)https://mp.csdn.net/postedit/85291994
    pandas 读csv文件read_csv(9.浮点转换和NA值)https://mp.csdn.net/postedit/85292391
    pandas 读csv文件read_csv(10.注释和空行)https://mp.csdn.net/postedit/85292609
    pandas 读csv文件read_csv(11.日期时间处理) https://mp.csdn.net/postedit/85292925
    pandas 读csv文件read_csv(12.迭代和块)https://mp.csdn.net/postedit/85293639
    pandas 读csv文件read_csv(13.read_fwf读固定宽度数据)https://mp.csdn.net/postedit/85294010
    
第2部分:
    pandas hdf文件读写简要https://mp.csdn.net/postedit/85294299
    pandas excel读写简要https://mp.csdn.net/postedit/85294545
    
第3部分:
    python中csv模块用法tcy https://mp.csdn.net/postedit/85228189
    pandas读csv文件read_csv错误解决办法7种https://mp.csdn.net/postedit/85228808
    pandas to_string用法https://mp.csdn.net/postedit/85294935

函数: 

pd.read_fwf(filepath_or_buffer, colspecs='infer', widths=None, **kwds)

用途:
   # 将固定宽度格式化的行表读入DataFrame;支持迭代或中断文件分块
参数:
   # 函数参数read_fwf与read_csv大致相同,带有两个额外参数,delimiter参数的用法不同
   filepath_or_buffer:str 含路径的文件名
      # read()方法对象如文件句柄或StringIO
      # URL:方案包括http,ftp,s3和文件。对于文件URL,需要主机。如本地文件://localhost/path/to/table.csv
   colspecs:元祖列表或'infer'#给出固定宽度范围
      #如[(1,7),(10,22),...]每个字段为半开区间即[int,int)
      #字符串值'infer'可用于指示解析器尝试检测前100行的列规格
   width:int列表
      #字段宽度列表,如果间隔是连续的用于代替'colspecs'
   delimiter:str,默认''+''
      #要考虑作为固定宽度文件中的填充字符的字符。
      #用于指定字段的填充字符例如不是空格用'〜'
返回:
   # DataFrame或TextParser

实例1:colspecs指定字段位置 

# 固定宽度数据文件:

# 位置1 6 11 20 24 33 37 43
data=' id8141 360.242940 149.910199 11950.7\n' \
     ' id1594 444.953632 166.985655 11788.4\n' \
     ' id1849 364.136849 183.628767 11806.2\n' \
     ' id1230 413.836124 184.375703 11916.8\n' \
     ' id1948 502.953953 173.237159 12468.3'

colspecs = [(1, 7), (11, 21), (24, 34), (37, 44)]#字段严格的位置
pd.read_fwf(pd.io.common.StringIO(data), colspecs=colspecs, header=None, index_col=0)

                1          2       3
0
id8141 360.242940 149.910199 11950.7
id1594 444.953632 166.985655 11788.4
id1849 364.136849 183.628767 11806.2
id1230 413.836124 184.375703 11916.8
id1948 502.953953 173.237159 12468.3

colspecs = [(0, 7), (10, 21), (23, 34), (36, 44)]  #字段前后可以包含一些空格
df = pd.read_fwf(pd.io.common.StringIO(data), colspecs=colspecs, header=None, index_col=0)#结果同上:  

实例2:widths指定字段长度 

# Widths are a list of integers
from io import StringIO

widths = [7, 14, 13, 10]  #必须将数据前空白数量包含进来
pd.read_fwf(StringIO(data), widths=widths, header=None)

       0          1          2       3
0 id8141 360.242940 149.910199 11950.7
1 id1594 444.953632 166.985655 11788.4
2 id1849 364.136849 183.628767 11806.2
3 id1230 413.836124 184.375703 11916.8
4 id1948 502.953953 173.237159 12468.3  

实例3:用前100行数据自动推断数据 

# 默认read_fwf尝试colspecs使用文件前100行来推断文件。
# 只能在列对齐并且delimiter分隔符为空格(默认)情况下执行

pd.read_fwf(StringIO(data), header=None, index_col=0)#结果同例1

# 指定列的数据类型
pd.read_fwf(StringIO(data), header=None, index_col=0).dtypes

1 float64
2 float64
3 float64
dtype: object

pd.read_fwf(StringIO(data), header=None, dtype={2: 'object'}).dtypes

0 object
1 float64
2 object
3 float64
dtype: object  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值