【问题标题】:read file with pandas and create header用熊猫读取文件并创建标题
【发布时间】:2023-03-22 02:22:01
【问题描述】:

我有几个以这种方式格式化的txt文件

label1: value1 label2: string1 date: 2018-06-26 label3: value2 label4: string

我想读取这些文件并创建一个数据库 我有标题,然后是值/字符串 然后我将其写入文件。 有什么帮助吗? 问候

【问题讨论】:

  • 使用 pandas read_csv 读取文本文件,然后将所有这些合并到一个数据帧中
  • 你能提供一个你迄今为止尝试过的例子吗?
  • dataset_cormat = pd.read_csv('cormat_out.txt', delimiter="", header=None, names=["shot", "user", "date",'seq','written by']),但这不是我想要的,因为它无法根据我设置的标题划分数据
  • 列之间的分隔符是什么?它只是列名和值之间的空格,还是制表符?如果它与空格不同,您可能会在这里找到答案stackoverflow.com/questions/38366494/…(只需将 | 更改为 tab 并将 = 更改为 : )

标签: python database pandas file


【解决方案1】:

看起来你有标识符标签和值之间的映射。您可以通过标准 Python 将其转换为字典:

from io import StringIO

mystr = StringIO("""label1: value1 label2: string1 date: 2018-06-26 label3: value2 label4: string""")

# replace mystr with open('file.csv', 'r')
with mystr as fin:
    data = next(fin).strip().split()
    data_dict = {i[:-1]: j for i, j in zip(data[::2], data[1::2])}

print(data_dict)

{'date': '2018-06-26',
 'label1': 'value1',
 'label2': 'string1',
 'label3': 'value2',
 'label4': 'string'}

根据您想要输出数据的确切格式,这里有许多选项,例如pandascsv 等。您需要提供更多详细信息以获得此步骤的帮助,但首先您应该调查这些选项:

【讨论】:

    【解决方案2】:

    如果数据与此完全相似:

    年龄:39 姓名:Jack 日期:2018-06-26 地区:纽约 公开赛:是
    年龄:21 姓名:玫瑰日期:2018-09-16 地区:TX 开放时间:否

    您需要根据行中的空格来拆分文本。

    import pandas as pd
    
    f=open('D:\\1.txt','r')
    datalist=[]
    dlabels=[]
    for line in f:
        words = line.split(' ')
        words[-1] = words[-1][:-1]
        if len(dlabels)==0:
            for i in range(0,len(words),2):
                dlabels.append(words[i][:-1])
        tempL=[]
        for i in range(0,len(words),2):
            tempL.append(words[i+1])
        datalist.append(tempL)        
    f.close()
    
    data=pd.DataFrame(datalist,columns=dlabels)
    print(data)  
    

    输出:
    年龄 姓名 日期 地区 开放
    0 39 杰克 2018-06-26 纽约 是
    1 21 玫瑰 2018-09-16 TX NO

    【讨论】:

    • 感谢@DataScienceStep 的工作。我只需要编辑标签的名称,它有一个空格。我能够创建数据帧!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2019-03-31
    • 2020-04-17
    • 2017-10-21
    • 2021-07-06
    • 2020-01-03
    相关资源
    最近更新 更多