python - 如何将文本文件转换为不同的 pandas 数据帧?

标签 python pandas parsing

我的程序在 .txt 文件中提供输出。此输出中有 3 个不同的表。我需要将这三个表转换为pandas 数据框。我不确定解决这个问题的最佳方法是什么。

这就是我的 .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 options跳过标题行并显式命名列(实际的列标题摆脱了固定宽度解析器)。

第一帧看起来像

    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

关于python - 如何将文本文件转换为不同的 pandas 数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58187951/

相关文章:

python - 创建唯一验证 key /号码的方法

python - 用 Python 编码的图像锐化算法

python - 如何根据不同日期的某些列转移 pandas 数据框中的值

ruby - 解析来自 API 的字符串

c++ - 使用 STL 解析整数

python - Windows 10 Bash 中的 py-opencv 导入错误

python - 使用变量指定使用 str.format 格式化 float

python - Pandas 数据框的形状到 3d 数组

python - 分割为 |并在 pandas 系列中找到独特的值(value)

ios - JSON 解析 - 没有 URL session 任务恢复的替代方法是什么,因为它不是主线程的一部分?