如何将.txt格式的文件导入到Python中,使用常规的列结构(但不是可靠的分隔符,如制表符、逗号等)

2024-09-30 06:10:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用疾病控制中心(CDC)的原始文本文件(.txt)——它没有头——并且希望导入数据以便在Python中使用。CDC按列为字段提供代码本:

 - Columns 1-6       - FILLER space (blank space, unused)
 - Column 7          - version field (A or S)
 - Columns 8-9       - FILLER space (blank space, unused)
 - Column 10         - numeric flag    (1 or 2)
 - Columns 11-14     - numeric field for year
 - Columns 15-16     - numeric field for month
 - Columns 17-20     - FILLER space (blank, unused)
 - Columns 21-24     - numeric field for time
 - Columns 25     - numeric field for day of the week
 - ...
 - Column 439 - text field
 - Column 440 - numeric field
 - Columns 441-3050 - FILLER space

以下是原始数据的第一行示例(减去前六个空白列):

     A  2201701    10462        11                1                                 36116      1                                 1  3033    0833                               99110300  3         05206021                        N00000000N    6034.84   178 NNNNNNXXY03 2222124N4222NN1                 1              M 07  2016     2504325  25043    1130051 NYYY           P038                                    058     1

以下是一个早期尝试:

    CHS2 = pd.read_csv(r'C:\CDC\FetalDeaths\2017_FET_Analysis_Public_US_20190219.txt', header=None)
    CHS2.info()

这导致了以下几点:

>    <class 'pandas.core.frame.DataFrame'>
>    RangeIndex: 49170 entries, 0 to 49169
>    Data columns (total 1 columns):
>    0    49170 non-null object
>    dtypes: object(1)
>    memory usage: 384.2+ KB

作为一个仍在学习Python的人,我正在尝试发现如何导入此类数据。标准分隔符(例如逗号)在这里似乎不合适。我还没有遇到类似的堆栈溢出问题。有人会建议什么?另外,如何仅导入特定列并对其进行格式化?我们将不胜感激


Tags: orcolumns数据txtfieldforunusedcolumn
1条回答
网友
1楼 · 发布于 2024-09-30 06:10:57

以下是如何将文件的行转换为具有一致分隔符的行:

with open(r'C:\Users\jfrya\OneDrive\Desktop\COVID19\US_counties\CDC\FetalDeaths\2017_FET_Analysis_Public_US_20190219.txt', 'r') as f:
    lines = f.read().splitlines()
    
data = '\n'.join([','.join([s for s in line.split() if s]) for line in lines])

相关问题 更多 >

    热门问题