如何为存储为字典中的值的数据框提供文本键?
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']
.以上是关于如何为存储为字典中的值的数据框提供文本键?的主要内容,如果未能解决你的问题,请参考以下文章