【发布时间】:2018-12-11 22:22:24
【问题描述】:
我有以下代码用于使用 csv 文件创建数据框字典:
l = ['employees','positions']
d = {}
for x in l:
d[x] = pd.read_csv("P:\\python_work\\data_sets\\" + x + ".csv")
如何使用内存中已经存在的数据框列表来做同样的事情?
这不起作用,但也许它有助于澄清我正在尝试做的事情:
l = ['df1','df2']
d = {}
for x in l:
d[x] = x
然后我就可以像这样访问单个数据帧:
d['df1']
我使用 csv 文件提供了示例,因为它可以工作并且具有相同的最终结果(数据框字典)。
以下是字典所需内容的示例:
{'employees': id name date
0 1 bob 1/1/2018
1 2 sally 1/2/2018, 'positions': pos desc status
0 12454 director a
1 65444 manager i}
我想使用现有数据框的列表而不是 csv 文件。我尝试使用不带引号的列表,但出现错误:
l = [employees, positions]
d = {}
for x in l:
d[x] = x
...但我收到此错误:
TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
【问题讨论】:
-
有什么不好的?
-
如果
df1和df2是全局命名空间中的变量,您可以使用globals()['df1']等方式访问它们。虽然更好的做法是在加载它们时将它们存储在字典中在。 -
l = ['df1','df2']是一个字符串列表。你需要一个数据框列表。 -
我认为像
d[x] = eval(x)这样的解决方案会起作用,但我对eval不太熟悉。 -
如果我使用诸如 l = [df1, df2] 之类的数据帧列表,则会收到错误消息“数据帧对象是可变的,因此它们不能被散列”
标签: python pandas csv dictionary dataframe