【问题标题】:Extract dataframes from python dictionary从 python 字典中提取数据帧
【发布时间】:2019-08-12 17:10:32
【问题描述】:

我有一个包含 3 个数据帧的 Python 字典,仅此而已。我需要通过数据框名称调用每个数据框而不使用 d[''];例如,对于数据框 loopdata1,我需要在不执行 d['loopdata1'] 的情况下调用它。这是包含 3 个数据帧 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')

我试过Convert a dictionary to a pandas dataframeExtracting dataframes from a dictionary of dataframes 没有运气。感谢您的观看!

【问题讨论】:

  • 这听起来像XY problem
  • 您可以使用list(dict.values()) 直接访问字典的值列表并对其进行索引
  • 我该如何澄清 Scott?
  • 谢谢安德森,这很有用,但我试图调用整个数据帧,如 newdf = loopdata1,而不是 newdf = d['loopdata1']。

标签: python pandas dataframe dictionary for-loop


【解决方案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)

【讨论】:

  • 谢谢 Zack,我可以用它!唯一的问题是,最后一行应该是: main_df = main_df.append(appending_df)
  • 不错,我做出改变以反映
猜你喜欢
  • 2016-04-28
  • 2020-09-06
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
相关资源
最近更新 更多