为了将固定宽度格式的文本文件中的数据读取到DataFrame中,pandas引入了一个名为 的函数read_fwf()
。那么什么是固定宽度格式的文本文件呢?固定宽度格式的文本文件是行中每个字段具有固定宽度或固定字符数的文件。
这些类型的文件主要用于旧系统中的数据存储和交换。为了从此类文件中读取数据并将其转换为 DataFrame,Pandas 库提供了一个名为 read_fwf() 的函数。该函数将文件名或文件句柄作为输入并返回 DataFrame。它还支持用于自定义的可选参数,例如指定列宽、标题行、数据类型等。
使用 read_fwf() 函数的优点
read_fwf()函数的优点是处理格式和结构一致的数据,使得数据的读取和解析变得容易。此外,该函数可以高效、高速地处理大型数据集,这在处理大数据时至关重要。
实现 read_fwf() 函数
在本节中,我们将通过三个示例来演示 read_fwf() 函数的实现。我们将使用包含固定宽度格式值的示例“data.txt”文件来进行说明。您可以从这里下载该文件:
该文件包含一列固定宽度值,每个值的宽度为 10 个字符。
示例 1:读取单列固定宽度文件
1
2
3
4
|
import pandas as pd df = pd.read_fwf( 'data.txt' , colspecs = 'infer' , header = None ) print (df) |
我们将 pandas 库导入为pd
。然后使用pd.read_fwf()
函数将包含固定宽度格式行的文件读取data.txt
到 pandas 数据框中,pd.read_fwf()
其中包含要读取的文件的名称或路径,这是一个可选参数,指定的宽度文件中的列。infer 自动从输入文件推断列宽,最后一个参数也是可选的,它指定是否存在标题,在本例中为无标题。最后,我们打印结果。
输出:
示例 2:读取多列固定宽度文件
import pandas as pd colspecs = [( 0 , 5 ), ( 5 , 10 ), ( 10 , 15 )] # define column widths df = pd.read_fwf( 'data.txt' , colspecs = colspecs, header = None , names = [ 'col1' , 'col2' , 'col3' ]) print (df) |
在此示例中,我们使用 colspecs 参数指定列的宽度。我们定义一个元组列表,其中包含输入文件中每列的开始和结束位置。与之前一样,标题设置为 none 表示文件中没有标题行。[‘col1’, ‘col2’, ‘col3’] 是生成的 DataFrame 中的列名称。最后,我们打印结果。
输出:
示例 3:跳过行并指定数据类型
import pandas as pd colspecs = [( 0 , 5 ), ( 5 , 10 ), ( 10 , 15 )] # define column widths df = pd.read_fwf( 'data.txt' , colspecs = colspecs, header = None , names = [ 'col1' , 'col2' , 'col3' ], dtype = { 'col1' : int , 'col2' : float }) print (df) |
在此代码中,我们指定dtype
结果 DataFrame 中列的数据类型。(0, 5), (5, 10), (10, 15)
是指定输入文件中每列宽度的参数。我们dtype
指定列的数据类型为浮点型和整数型,其中每个键是列名,每个值是相应的数据类型。最后,我们打印结果。
输出:
结论
在本文中,我们read_fwf()
在 pandas 中实现了方法,它是读取固定宽度格式文件和创建 DataFrame 的强大工具。它可以轻松高效地解析具有一致结构的数据,并且可以高速高效地处理大型数据集。我们最初对其进行了简要概述,后来看到了三种实现它的方法。您还可以通过哪些其他方式在数据处理任务中应用 read_fwf()?
阅读以下更多有趣的文章:
- 阅读如何将 Pandas 中的 int64 转换为日期时间?
- 使用 For 循环读取、追加 Pandas 中的数据帧