如何为存储为字典中的值的数据框提供文本键?

Posted

技术标签:

【中文标题】如何为存储为字典中的值的数据框提供文本键?【英文标题】:How do I give a text key to a dataframe stored as a value in a dictionary? 【发布时间】:2018-10-21 09:37:54 【问题描述】:

所以我有 3 个数据框 - df1、df2.df3。我正在尝试遍历每个数据帧,以便我可以运行一些预处理 - 设置日期时间,将小时提取到单独的列等。但是,我遇到了一些问题:

如果我像 df_dict = 'df1' : df1, 'df2' : df2, 'df3' : df3 那样将 df 存储在字典中,然后像 in 那样循环遍历它

for k, v in df_dict.items():
    if k == 'df1':
        v['Col1']....
    else:
        v['Coln']....

我收到了NameError: name 'df1' is not defined

我做错了什么?我最初以为我没有在 df1..3 中读取数据,但这似乎运行正常(因为它不会失败,并且在给定时间滞后的情况下它清楚地读取它(它们是大文件))。它前面的代码(用于加载)是:

DF_DATA =  'df1': 'df1.csv','df2': 'df2.csv', 'df3': 'df3.csv' 
for k,v in DF_DATA.items():
    print(k, v) #this works to print out both key and value
    k = pd.read_csv(v) #this does not

我认为这可能是原因,但不确定。我期待加载循环创建 3 个数据帧并将它们放入内存。然后对于页面顶部的循环,我想在我的 if 块条件中引用字符串键,以便每个 df 可以得到稍微不同的预处理处理。

非常感谢您的协助。

【问题讨论】:

您能否展示一下您的数据框的外观,因为我尝试了您的方法,它对我有用 【参考方案1】:

您没有正确创建df_dict。试试这个:

DF_DATA =  'df1': 'df1.csv','df2': 'df2.csv', 'df3': 'df3.csv' 
df_dict= k:pd.read_csv(v) for k,v in DF_DATA.items()

【讨论】:

那行不通。所以我输入了:DF_DATA = 'df1': 'df1.csv', 'df2': 'df2.csv', 'df3': 'df3.csv' df_dict= k:pd.read_csv(v) for k,v in DF_DATA.items(),但是当我在执行加载后尝试df1.info() 时得到了NameError: name 'df1' is not defined @sandeepmohan 如果您按照上面的代码,我们没有创建 df1 对象。 D'ohh。好点子。估计睡眠对我有好处。我现在看到了。太精彩了。最后一件事 - 我如何将它从 dict 中分离出来,这样当我只想对一个 dframe 进行操作时,我就不需要遍历所有 3 个 dframe。或者当我想在 df2 上进行 groupby 时,您是否建议我将其留在字典中。我能够使用您的方法超快速地进行预处理,但稍后在代码中我只需要引用其中一个 df 而不是全部。 @sandeepmohan 假设您想要获取“df2.csv”的数据框。然后您可以通过字符串'df2'df_dict 中选择它。换句话说,dict_df['df2']. 非常感谢您的帮助,肯。这样就搞定了!!同样为了简单起见 - 对于 groupby 和其他函数调用,我只是将每个 df 引用分配给一个变量。更容易键入... Df1 = dict_df['df2'] .

以上是关于如何为存储为字典中的值的数据框提供文本键?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何将具有重复索引值的数据框转换为字典

如何为 C# 字典中的多个键分配一个值?

如何为每个用户提供 Firebase 存储中的特定文件夹

字典中的数据类型为unicode

如何为存储在 Blob 容器中的 excel 文件生成 Blob SAS URL

如何为 django 模板中的标签创建动态 id