Создание dict из столбцов таблицы Excel с пандами - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь проанализировать каталог из n .xslx файлов и создать .py файл, который является просто dict из первых двух столбцов, но я сталкиваюсь с проблемой, когда с кодом, который у меня есть, он только добавляетпервые рабочие листы из 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)

данные, с которыми я работаю, просто имеют идентификационный номер в первом столбце и строку описания во втором, так что вывод выглядит следующим образом

{
    "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)"
    }
}

В идеале я хотел бы, чтобы в качестве ключа использовалась строка, а в качестве значения - идентификатор, но к новому файлу добавляются правильные столбцы и информация, но не все рабочие листы включены.Я все еще новичок в пандах и рекурсии в целом, поэтому я знаю, что есть фундаментальное понимание того, что является коренной проблемой, но любая помощь в достижении этого понимания будет принята с благодарностью.

1 Ответ

0 голосов
/ 20 декабря 2018

Основная идея заключается в следующем, вы можете выводить в любом формате, который вы предпочитаете, но наиболее распространенными типами являются .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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...