我正在尝试解析n个.xslx文件的目录并创建一个.py文件,该文件只是前两列的决定,但是我遇到的问题是我的代码只能附加目录中2个工作簿的第一个工作表。这是我到目前为止编写的代码
import os
import xlrd
import pandas as pd
import pprint
import json
pp = pprint.PrettyPrinter(indent=4)
def get_did(xlsx, dbd):
dbd = pd.read_excel(xlsx, index_col=0, usecols="A,B").to_dict()
with open("db.py", 'a', newline='') as f:
json.dump(dbd, f, sort_keys=True, indent=4)
path = os.getcwd()
filenames = os.listdir(path)
dbd = {}
for filename in filenames:
if filename.endswith('.xlsx'):
get_did(filename, dbd)
print(dbd)
我正在使用的数据在第一列中只有一个ID号,在第二列中有一个描述字符串,因此输出看起来像这样
{
"Description": {
"1": "45KV Suspension Polymer-DE",
"2": "45KV Post Tie Polymer",
"3": "45KV Post Vert SAC Polymer",
"4": "45KV Post Hor SAC Polymer",
"5": "35KV Post Tie",
"6": "35KV Post Vertical SAC",
"7": "45KV Post Vertical SAC",
"8": "35KV Post Horizontal SAC",
...
"72": "69KV Post Hor LAC Polymer",
"73": "69KV Post Vert LAC Polymer",
"74": "69KV Post Vert LAC Poly-Dbl",
"75": "15KV Suspension Polymer",
"76": "15KV Suspension Polymer-DE"
}
}{
"Size": {
"1": "1/4\" EHS",
"2": "5/16\" EHS",
"3": "7/16\" EHS",
"4": "9/16\" EHS",
"5": "1/2\" AW",
"6": "3#7 HS CW",
"7": "7#8 HS CW",
"8": "7#6 EHS CW",
"9": "19#9 EHS CW",
"10": "1/4\" GLV (3#7)"
}
}
理想情况下,我希望将字符串作为键,将ID号作为值,但是正确的列和信息会附加到新文件中,只是不包括所有工作表。总体而言,我仍然对熊猫和递归还不陌生,所以我知道对这两者都有根本的了解,但是对获得这种了解的任何帮助将不胜感激。
答案 0 :(得分:0)
紧随其后的是基本思想,您可以使用自己喜欢的任何格式输出,但是最常见的类型是“ .csv”,“。txt”或excel:
import os
import pandas as pd
path =os.chdir(r"yourdirectory")
datalist=[]
mydict = {}
for file in os.listdir():
filelist = [f for f in os.listdir() if f.endswith("xlsx")]
for fs in filelist:
df = pd.read_excel(fs, sep = '\t')
datalist.append(df)
alldata = pd.concat(datalist)
mydict = dict(zip(alldata[alldata.columns[0]], alldata[alldata.columns[1]]))
print(mydict)