使用Pandas解析脏文本文件时的标题问题

2024-05-19 16:11:17 发布

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

我正在尝试解析一个创建于99年的文本文件,它有点难以处理。头在第一行,用“^”分隔(整个文件用“^”分隔)。问题是有些字符似乎被抛出(例如,长行空格似乎将头与文件中的其余数据点分隔开来)。(位于https://www.chicagofed.org/applications/bhc/bhc-home的示例文件我的示例引用的是Q3 1999)。你知道吗

问题: 1) 太多的头来手动创建它们,我需要这样做的许多文件,可能有新的头,因为我们向前或向后移动整个时间序列 2) 我需要从文件中重新创建头文件,然后删除它们,这样我就不会用重复的头文件污染我的整个第一行。我意识到我可能可以在事后将数据帧[1:]切分并去掉它,但这太草率了,我相信还有更好的方法。 3) 按公司列出的未报告字段显示为“^^^^^^^^^^^^”,这很好,但在这种情况下,pandas会自动填充nan吗?你知道吗

我下面的尝试只是试图隔离标题,但我真的被困在文本文件的结构方式这一更大的问题上。我遗漏了什么建议或明显的小把戏?你知道吗

from zipfile import ZipFile
import pandas as pd

def main():
    #Driver

    FILENAME_PREFIX = 'bhcf'
    FILE_TYPE = '.txt'
    field_headers = []

    with ZipFile('reg_data.zip', 'r') as zip:

        with zip.open(FILENAME_PREFIX + '9909'+ FILE_TYPE) as qtr_file:
            headers_df = pd.read_csv(qtr_file, sep='^', header=None)

            headers_df = headers_df[:1]
            headers_array = headers_df.values[0]

            parsed_data = pd.read_csv(qtr_file, sep='^',header=headers_array)

Tags: 文件数据import示例pandasdf头文件as
1条回答
网友
1楼 · 发布于 2024-05-19 16:11:17

我尝试了你链接的文件和我从2015年下载的文件:

import pandas as pd
df = pd.read_csv('bhcf9909.txt',sep='^')
first_headers = df.columns.tolist()
df_more_actual = pd.read_csv('bhcf1506.txt',sep='^')
second_headers = df_more_actual.columns.tolist()
print(df.shape)
print(df_more_actual.shape)
# df_more_actual has more columns than first one
# Normalize column names to avoid duplicate columns
df.columns = df.columns.str.upper()
df_more_actual.columns = df_more_actual.columns.str.upper()
new_df = df.append(df_parsed2)
print(new_df.shape)

最后的数据帧既有csv的行,也有csv的列的并集。 您可以对每个季度的csv执行此操作并附加它,这样最终您将拥有它们的所有行和列的并集。你知道吗

相关问题 更多 >