从一个文件中读取字典,并使用python从panda创建excel(数据框)l

2024-09-30 04:34:09 发布

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

我有一个如下所示的输入文件,其中包含多行字典,其中键列保持不变:

{'TABSCHEMA': 'OP', 'TABNAME': 'T1', 'COLNO': 9, 'COLNAME': 'ACD'}
    {'TABSCHEMA': 'OP', 'TABNAME': 'T1', 'COLNO': 8, 'COLNAME': 'ACD1'}
     {'TABSCHEMA': 'OPE', 'TABNAME': 'T1', 'COLNO': 8, 'COLNAME': 'AC_CD'}
     {'TABSCHEMA': 'OPEW', 'TABNAME': 'T2', 'COLNO': 7, 'COLNAME': 'AC_ID'}

我想将其转换为数据帧,如下所示:

Expected O/p:
    TABSCHEMA   TABNAME COLNO   COLNAME
0   OP  T1  8   ACD
1   OP  T1  9   ACD1
2   OPE T1  8   ACC_D
3   OPEW T2 7   AC_ID
SQL used:
import pandas as pd
def compare(File1,File2):
    with open(File1,'r') as f:
        d=set(f.readlines())
    with open(File2,'r') as f:
        e=set(f.readlines())
    with open('pandastry1.txt','w') as f:
        for line in list(e-d):
            dict_count = len(line)
            print(dict_count)
            df = pd.DataFrame(line[0], index=[0])
            print(df)
   
compare('OPd.txt','OPER.txt')

似乎查询有问题,。你能帮忙吗


Tags: txtaswithlineopenact1op
2条回答

您可以尝试以下方法:

            ...
            df = pd.DataFrame(eval(line))
            ...

而不是df = pd.DataFrame(line[0], index=[0])

要将完整文件读入数据帧,可以执行以下操作:

with open("input.txt", "r") as file:
    df = pd.DataFrame.from_records(eval(line) for line in file.readlines())

(将input.txt替换为您的文件名。)

编辑: 当我粘贴这个

{'TABSCHEMA': 'OP', 'TABNAME': 'T1', 'COLNO': 9, 'COLNAME': 'ACD'}
    {'TABSCHEMA': 'OP', 'TABNAME': 'T1', 'COLNO': 8, 'COLNAME': 'ACD1'}
     {'TABSCHEMA': 'OPE', 'TABNAME': 'T1', 'COLNO': 8, 'COLNAME': 'AC_CD'}
     {'TABSCHEMA': 'OPEW', 'TABNAME': 'T2', 'COLNO': 7, 'COLNAME': 'AC_ID'}

放入名为input.txt的文件中,然后运行

with open("input.txt", "r") as file:
    df = pd.DataFrame.from_records(eval(line) for line in file.readlines())
print(df)

我明白了

  TABSCHEMA TABNAME  COLNO COLNAME
0        OP      T1      9     ACD
1        OP      T1      8    ACD1
2       OPE      T1      8   AC_CD
3      OPEW      T2      7   AC_ID

如果要将数据框写入excel,请使用.to_excel

df.to_excel("input.xlsx")

请检查以下解决方案

enter image description here

enter image description here

希望这就是你想要的

ss = [{'TABSCHEMA': 'OP', 'TABNAME': 'T1', 'COLNO': 9, 'COLNAME': 'ACD'},
 {'TABSCHEMA': 'OPE', 'TABNAME': 'T1', 'COLNO': 8, 'COLNAME': 'AC_CD'},
 {'TABSCHEMA': 'OPEW', 'TABNAME': 'T2', 'COLNO': 7, 'COLNAME': 'AC_ID'}]

import json
import pandas as pd
df = pd.io.json.json_normalize(ss)
df.to_excel(‘excel_filename.xlsx’)

更新输入后:

enter image description here

相关问题 更多 >

    热门问题