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