代码之家  ›  专栏  ›  技术社区  ›  bruvio

用pandas读取文件并创建头文件

  •  2
  • bruvio  · 技术社区  · 8 年前

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

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

    我想读取这些文件并创建一个数据库 其中我有头,然后是值/字符串 然后我把它写进文件。 有什么帮助吗? 当做

    2 回复  |  直到 8 年前
        1
  •  1
  •   Hamid Mir    8 年前

    如果数据与此完全相似:

    年龄:39姓名:杰克日期:2018-06-26地区:纽约公开赛:是
    年龄:21岁姓名:罗斯日期:2018-09-16地区:德克萨斯州公开赛:否

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

    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德克萨斯州编号

        2
  •  2
  •   jpp    8 年前

    看起来您在标识符标签和值之间有一个映射。您可以通过标准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'}
    

    从这里开始,根据要输出数据的确切格式,有许多选项,例如: pandas ,请 csv 等等。您需要提供更多有关此步骤的帮助的详细信息,但首先应该调查以下选项: