python - 如何将文本文件转换为不同的熊猫数据框?
问题描述
我的程序在 .txt 文件中给出了输出。此输出中有 3 个不同的表。我需要将这三个表转换为熊猫数据框。我不确定解决此问题的最佳方法是什么。
这是我的 .txt 输出文件的样子:
column_header standard_content (Old) standard_content (New)
214 STAFF_ORIGIN_IND_NATIVE_AMER N Y
215 STAFF_ORIGIN_IND_PACIF_ISLND N Y
128 STUDENT_INFORMATION_RELEASE N Y
211 STAFF_ORIGIN_IND_ASIAN N Y
105 STUDENT_ORIGIN_IND_NATIVE_AMER N Y
104 STUDENT_ORIGIN_IND_HISPANIC N Y
160 STUDENT_OUTSIDE_CATCHMENT N Y
346 COURSE_EXTRA_POINT_ELIGIBLE N Y
528 SUBSTITUTE_REQUIRED N Y
527 STAFF_ABSENCE_AUTHORIZED N Y
column_header data_req (Old) data_req (New)
20 SCHOOL_SIZE_GROUP N Y
241 STAFF_CONTACT N Y
346 COURSE_EXTRA_POINT_ELIGIBLE N Y
434 DISCIPLINE_FED_OFFENSE_GROUP N Y
32 SCHOOL_ATTENDANCE_TYPE N Y
142 STUDENT_COUNTRY_OF_BIRTH N Y
74 FACILITY_COUNTY_CODE N Y
64 FACILITY_PARKING_SPACES N Y
436 DISCIPLINE_DIST_OFFENSE_GROUP N Y
321 STAFF_BARGAINING_UNIT N Y
column_header element_type (Old) element_type (New)
331 DISTRICT_CODE Key Local
511 DISTRICT_CODE Key Local
445 DISTRICT_CODE Key Local
2 DISTRICT_CODE Key Local
302 STAFF_ASSIGN_FINANCIAL_CODE Key Local
493 SCHEDULE_SEQUENCE Key Local
461 INCIDENT_ID Key Local
431 INCIDENT_ID Key Local
159 STUDENT_CATCHMENT_CODE Key Local
393 DISTRICT_CODE Key Local
我试图在循环中使用它,但它创建了一个数据框并且它被搞砸了。
df = pd.read_fwf(io.StringIO(report)
df.to_csv('data.csv')
result_df = pd.read_csv('data.csv', )
print("Final report", result_df)
有没有一种方法可以基于关键字创建一个新的数据框,例如“column_header”,或者我可以通过任何其他方式来做到这一点?
解决方案
只需几个步骤即可。
- 啜食整个文件
- 根据分隔符拆分(空行)
- 将每个部分读入单独的数据帧
如果我们让RAW_DATA
你的文件的内容,这可以用
dfs = [pd.read_fwf(StringIO(part),
header=None, skiprows=1,
names=['id', 'header', 'old', 'new'])
for part in raw_data.strip().split('\n\n')]
拆分查找空行。read_fwf 调用使用几个 pandas TextParser选项来跳过标题行并显式命名列(实际的列标题会抛弃固定宽度的解析器)。
第一帧看起来像
id header old new
0 214 STAFF_ORIGIN_IND_NATIVE_AMER N Y
1 215 STAFF_ORIGIN_IND_PACIF_ISLND N Y
2 128 STUDENT_INFORMATION_RELEASE N Y
3 211 STAFF_ORIGIN_IND_ASIAN N Y
4 105 STUDENT_ORIGIN_IND_NATIVE_AMER N Y
5 104 STUDENT_ORIGIN_IND_HISPANIC N Y
6 160 STUDENT_OUTSIDE_CATCHMENT N Y
7 346 COURSE_EXTRA_POINT_ELIGIBLE N Y
8 528 SUBSTITUTE_REQUIRED N Y
9 527 STAFF_ABSENCE_AUTHORIZED N Y
推荐阅读
- r - 将 2 个数据框与重复列合并?
- c# - 我正在制作一个相册查看器,但 MULTISELECT 只得到一张照片。怎么做?
- c# - 保存并加载我的 listview/observablecolletion 到 txt
- c# - 使用带有列表的 Windows API EnumThreadWindows 的内存泄漏
- json - 如何在 Django 中验证之前从请求中的子对象获取信息?
- java - AuthorizedFeignClient 具有自定义角色的 JHipster 微服务与 UAA
- iis-10 - 此配置部分不能在此路径中使用 - Windows 2016
- .net - 如何在 .NET winforms webbrowser 中启用缩放 1 页而不是所有其他页面?
- android - Firebase 持久性数据未离线加载
- java - 如何从 Firebase 实时数据库加载随机字符串?