Извлечь кадры данных из словаря python

У меня есть словарь Python, содержащий 3 фрейма данных и больше ничего. Мне нужно вызывать каждый фрейм данных по имени фрейма данных без использования d['']; например, с кадром данных loopdata1 мне нужно вызвать его, не выполняя d['loopdata1']. Вот словарь с тремя фреймами данных loopdata1, loopdata2 и loopdata3:

dict_items([('loopdata1',    index       id        name  age  sex  sterilized
0      0  A006100       Scamp  120    0           1
1      1  A047759        Oreo  120    0           1
2      2  A134067      Bandit  192    0           1
3      3  A141142      Bettie  180    1           1
4      4  A163459       Sasha  180    1           0
5      5  A165752         Pep  180    0           1
6      6  A178569        Boti  180    0           1
7      7  A189592     Ophelia  216    1           1
8      8  A191351     Bri-Bri  192    1           0
9      9  A197810  Sassafrass  168    1           1), 
('loopdata2',    index       id     name  age  sex  sterilized
0      0  A200922   Carlos  192    0           1
1      1  A208755  Kootrie  168    0           1
2      2  A210457    Caleb  204    0           1
3      3  A212672     Cujo  156    1           0
4      4  A214991   Prissy  228    1           1
5      5  A215368  Guiness  156    0           1
6      6  A218622   Oliver  180    0           1
7      7  A218624   Cookie  180    0           1
8      8  A221174    Lippy  216    1           1
9      9  A221327    Jamie  192    1           1), 
('loopdata3',    index       id    name  age  sex  sterilized
0      0  A249087  *Polly  180    1           1
1      1  A251095  Beauty  168    1           1
2      2  A251214     Rex  144    0           1
3      3  A251268   Sully  204    0           1
4      4  A251402     Amy  216    1           1
5      5  A253939   Dirty  144    1           1
6      6  A254503   Daisy  204    1           1
7      7  A256412    Beau  192    0           0
8      8  A258441  Spring  168    1           1
9      9  A260631   Popki  168    0           1)]) 

Вот код, сгенерировавший словарь: я импортирую файлы Excel с теми же именами, что и кадры данных, и удаляю «.xlsx»:

import os
import glob
import pandas as pd
my_dir = '../test/'

os.chdir( my_dir )
filelist = []

for files in glob.glob( '*.xlsx' ) :
    filelist.append(files)

lst = [os.path.splitext(x)[0] for x in filelist]
lst

d = {}
for dfname in lst:
    d[dfname] = pd.read_excel(dfname + '.xlsx')

Я пробовал преобразовать словарь в кадр данных pandas и Извлечение фреймов данных из словаря фреймов данных безуспешно. Спасибо, что заглянули!


person shotty    schedule 21.03.2019    source источник
comment
Это похоже на проблему XY.   -  person Scott Boston    schedule 21.03.2019
comment
Вы можете напрямую получить доступ к списку значений dict с помощью list(dict.values()) и индексировать его.   -  person G. Anderson    schedule 21.03.2019
comment
Как мне объяснить Скотта?   -  person shotty    schedule 21.03.2019
comment
Спасибо, Андерсон, это полезно, но я пытаюсь вызвать весь фрейм данных, как в newdf = loopdata1, вместо того, чтобы делать newdf = d['loopdata1'].   -  person shotty    schedule 21.03.2019


Ответы (1)


вы можете добавлять входящие кадры данных вместе, а не добавлять их в словарь.
first = True for dfname in lst: if first = True: main_df = pd.read_excel(dfname + '.xlsx') first = False else: appending_df = pd.read_excel(dfname + '.xlsx') main.df = main_df.append(appending_df)

person Zack Oconnor    schedule 21.03.2019
comment
Спасибо Зак, я могу работать с этим! Единственное, последняя строка должна быть: main_df = main_df.append(appending_df) - person shotty; 21.03.2019
comment
хороший улов, я внес изменения, чтобы отразить - person Zack Oconnor; 23.03.2019