Python 3.x 将多个Excel文件导入pandas并导出到多个Stata文件 我的原始Excel文件是:

Python 3.x 将多个Excel文件导入pandas并导出到多个Stata文件 我的原始Excel文件是:,python-3.x,pandas,stata,Python 3.x,Pandas,Stata,[excel\u 1.xlsx,excel\u 2.xlsx,…,excel\u 12.xlsx] 首先,我想将它们导入到数据帧中,然后将它们附加到一个大数据帧中,然后df.to_dta,但是python显示了错误并说: MemoryError 我想问题是附加的数据帧太大了 所以我想我可以将每个Excel文件转换为每个Stata文件,即: [excel\u 1.xlsx,excel\u 2.xlsx,…,excel\u 12.xlsx] 到 [excel\u 1.dta,excel\u 2.dt

[excel\u 1.xlsx,excel\u 2.xlsx,…,excel\u 12.xlsx]

首先,我想将它们导入到数据帧中,然后将它们附加到一个大数据帧中,然后
df.to_dta
,但是python显示了错误并说:

MemoryError

我想问题是附加的数据帧太大了

  • 所以我想我可以将每个Excel文件转换为每个Stata文件,即:
  • [excel\u 1.xlsx,excel\u 2.xlsx,…,excel\u 12.xlsx]

    [excel\u 1.dta,excel\u 2.dta,…,excel\u 12.dta]

    然后在Stata中附加它们,但我不知道怎么做

  • 我的原始代码是
  • 我想
    for
    循环应该可以工作,但我不知道怎么做

    (附加代码:

    import os
    import pandas as pd
    
    
    cwd = os.path.abspath('D:\\onedrive\\test2') 
    files = os.listdir(cwd) 
    print(files) 
    df = pd.DataFrame()
    for file in files:
        if file.endswith('.xlsx'):
            df = df.append(pd.read_excel(file, skiprows = [1,2] ,
                               dtype={"Opnprc": "str","Hiprc": "str","Loprc": "str","Clsprc": "str","Dnshrtrd": "str","Dnvaltrd": "str","Dsmvosd": "str",
                                      "Dsmvtll": "str","Dretwd": "str","Dretnd": "str","Adjprcwd": "str","Adjprcnd": "str","Markettype": "str",
                                      "Trdsta": "str"}), ignore_index=True) 
    df.head() 
    
    df.to_stata('test.dta')
    

    下面是如何在python3中使用
    for
    循环将每个Excel文件转换为Stata文件

    import pandas as pd
    IO = 'excel_{}.xlsx'
    num_files = 12
    
    for i in range(1, num_files + 1):
        df = pd.read_excel(
                io=IO.format(i), 
                skiprows = [1,2] ,
                dtype={"Opnprc": "str","Hiprc": "str","Loprc": "str","Clsprc": "str","Dnshrtrd": "str","Dnvaltrd": "str","Dsmvosd": "str",
                       "Dsmvtll": "str","Dretwd": "str","Dretnd": "str","Adjprcwd": "str","Adjprcnd": "str","Markettype": "str",
                       "Trdsta": "str"})
        df.to_stata('excel_{}.dta'.format(i))
        
    

    您是否尝试过Stata
    import excel'excel_1.xlsx'
    ,然后
    append
    …?向我们展示您的原始代码…若要在Stata中追加,请使用
    append
    命令。我尝试过append,但会显示一个内存错误。我将在问题中添加追加代码。非常感谢!!但在使用
    df.t之后,还有一个问题o_stata('excel{}.dta'.format(i))
    上面写着:UnicodeEncodeError:'latin-1'编解码器无法对0-3位的字符进行编码:序号不在范围(256)内。我发现这是因为我的一列包含中文字符,但我不知道如何处理。
    import pandas as pd
    IO = 'excel_{}.xlsx'
    num_files = 12
    
    for i in range(1, num_files + 1):
        df = pd.read_excel(
                io=IO.format(i), 
                skiprows = [1,2] ,
                dtype={"Opnprc": "str","Hiprc": "str","Loprc": "str","Clsprc": "str","Dnshrtrd": "str","Dnvaltrd": "str","Dsmvosd": "str",
                       "Dsmvtll": "str","Dretwd": "str","Dretnd": "str","Adjprcwd": "str","Adjprcnd": "str","Markettype": "str",
                       "Trdsta": "str"})
        df.to_stata('excel_{}.dta'.format(i))