将字典键分配为数据框名称,将值分配为数据框本身

3

我有一个包含多个pandas数据帧的字典,它看起来像这样:

key  Value
A    pandas dataframe here
B    pandas dataframe here
C    pandas dataframe here

我需要从字典中提取数据框并将字典键分配为名称。
期望的输出应该是和我的字典值一样多的独立数据框。
A = dict.values() - this is first dataframe

B = dict.values() - this is second dataframe

请注意,数据框的名称是字典键。
我尝试了这段代码,但没有成功。
for key, value in my_dict_name.items():
    key = pd.DataFrame.from_dict(value)

任何帮助都将不胜感激。


我不是很明白,你说你有一个Pandas数据框的字典。但是我不清楚预期输出应该是什么。在变量名中“解包”字典真的不是一个好主意(这是一种严重的反模式)。因为你基本上永远不知道你将会(重新)定义哪些变量。 - Willem Van Onsem
我有一个数据框的字典。字典的值是有效的pandas数据框,我需要解包并将字典键分配为数据框名称。 - Okroshiashvili
@NodarOkroshiashvilli:但是现在想象一下,有一个名为“list”、“dict”等的键。这将覆盖listdict等内置函数,因此很可能最终会导致程序崩溃。 - Willem Van Onsem
@WillemVanOnsem 我理解您的观点,也看到了为什么它可能是反模式。感谢建议。 - Okroshiashvili
1
为什么解包它们?如果你只是将它们保留在字典中不动,它们将会更容易访问。 - Dan
1个回答

3

虽然不是推荐的做法,但是可以实现:

感谢Willem Van Onsem提供更好的解释:

这是一个相当严重的反模式,特别是因为它可能会覆盖现有变量,而且永远无法排除这种情况

a = pd.DataFrame({'a':['a']})
b = pd.DataFrame({'b':['b']})
c = pd.DataFrame({'c':['c']})

d = {'A':a, 'B':b, 'C':c}
print (d)
{'A':    a
0  a, 'B':    b
0  b, 'C':    c
0  c}

for k, v in d.items():
    globals()[k] =  v

print (A)
   a
0  a

我认为在每个DataFrame中具有相同列或索引值的情况下,最好使用MultiIndex,同时DataFrame字典也完全可以。

2
也许更好的做法是强调 "不建议这么做"。这是一个相当严重的反模式,特别是因为它可能会覆盖现有变量,而且我们永远无法排除这种情况 :) - Willem Van Onsem
我不像你们这些人一样有丰富的编程经验,但我会尽力而为。在此之前,@jezrael的解决方案完美地运行。 - Okroshiashvili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接