Importieren Sie mehrere Excel-Dateien in Pandas und exportieren Sie sie in mehrere Stata-Dateien - python-3.x - Program QA

Importieren Sie mehrere Excel-Dateien in Pandas und exportieren Sie sie in mehrere Stata-Dateien

2020-06-30 python-3.x pandas stata
  1. Meine rohen Excel-Dateien sind:

[excel_1.xlsx,excel_2.xlsx,...,excel_12.xlsx] .

Zuerst möchte ich sie in Datenrahmen importieren und dann in einen großen Datenrahmen anhängen, dann df.to_dta , aber Python zeigt Fehler und sagte:

MemoryError

Ich denke, das Problem ist, dass der angehängte Datenrahmen zu groß ist.

  1. Also dachte ich, ich könnte jede Excel-Datei in jede Stata-Datei umwandeln.

[excel_1.xlsx,excel_2.xlsx,...,excel_12.xlsx]

zu

[excel_1.dta,excel_2.dta,...,excel_12.dta]

und sie in Stata anhängen, aber ich weiß nicht, wie ich das machen soll.

  1. Mein ursprünglicher Code war
import pandas as pd
IO ='excel_1.xlsx'

df = pd.read_excel(io=IO, 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('excel1.dta')

Ich denke, eine for Schleife sollte funktionieren, aber ich weiß nicht, wie ich das machen soll.

(der Append-Code:

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')

Answers

Hier erfahren Sie, wie Sie jede Excel-Datei mithilfe einer for Schleife in python3 in eine Stata-Datei umwandeln.

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))
    

Related