我正在使用疾病控制中心(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:CDCFetalDeaths2017_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的人,我正在尝试发现如何导入这些数据。标准分隔符(例如逗号(在这里似乎不合适。我还没有在堆栈溢出上遇到类似的问题。有人可能会有什么建议?另外,如何仅导入特定列并格式化它们?将不胜感激!
以下是将文件的行转换为具有一致分隔符的方法:
with open(r'C:UsersjfryaOneDriveDesktopCOVID19US_countiesCDCFetalDeaths2017_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])