python - 迭代使用“locals”生成的几个数据帧:Python
问题描述
我已将数据帧“df”拆分为较小的数据帧 df1、df2...dfn,以便将具有相同 ID(来自“UNIT-ID”列)的所有记录组合在一起并存储在这些较小的数据帧中。
Input:
UNIT-ID Q1 Q2 Q3
110-P1 37 487 0
110-P1 31 140 1
110-P1 46 214 1
110-P2 29 287 1
110-P2 45 131 1
110-P2 39 260 0
110-15 23 346 0
110-15 31 419 1
110-15 37 287 0
110-15 36 228 1
110-15 48 309 1
Output:
df1:
UNIT-ID Q1 Q2 Q3
110-P1 37 487 0
110-P1 31 140 1
110-P1 46 214 1
df2:
UNIT-ID Q1 Q2 Q3
110-P2 29 287 1
110-P2 45 131 1
110-P2 39 260 0
感谢@WB回答了这个问题,我已经使用下面的代码来实现这一点。
variables = locals()
for i,j in enumerate(df.groupby('UNIT-ID')):
variables["df{0}".format(i+1)] = j[1]
df1
Out[13]:
UNIT-ID Q1 Q2 Q3
16 110-15 23 346 0
17 110-15 31 419 1
18 110-15 37 287 0
19 110-15 36 228 1
20 110-15 48 309 1
接下来,我想对这些单独的数据帧中的每一个运行几个预处理步骤和深度学习模型,现在,这些数据帧 - df1、df2.. dfn 没有存储在本地驱动器上的任何位置,但是这些已经创建并且如果选中,可以解决。有没有办法遍历这些数据帧?
可以使用“dict”划分为 df1、df2...dfn,如下所示,但使用此选项,我需要将每个 df 保存在物理位置并再次读取,因为 dfs 仍存储在 dict 中并且必须通过单独调用来提取。有没有办法使用“本地人”或任何其他技术来完成这项任务?
d={"df{0}".format(i+1):j[1]for i,j in enumerate(df.groupby('UNIT-ID'))}
d['df1']
Out[17]:
UNIT-ID Q1 Q2 Q3
16 110-15 23 346 0
17 110-15 31 419 1
18 110-15 37 287 0
19 110-15 36 228 1
20 110-15 48 309 1
解决方案
您可以尝试遍历所有代码变量,按名称选择作为“子数据框”的变量(例如,在其名称中使用模式,例如subDf
),然后它们仅在这些变量中执行某些操作。为了使我的想法更清楚,请运行以下示例:
variables = locals()
for i,j in enumerate(df.groupby('UNIT-ID')):
variables["subDf{0}".format(i+1)] = j[1]
for each in [v for k,v in variables.items() if 'subDf' in k]:
print(v)
#output:
# UNIT-ID Q1 Q2 Q3
#6 110-15 23 346 0
#7 110-15 31 419 1
#8 110-15 37 287 0
#9 110-15 36 228 1
#10 110-15 48 309 1
# UNIT-ID Q1 Q2 Q3
#0 110-P1 37 487 0
#1 110-P1 31 140 1
#2 110-P1 46 214 1
# UNIT-ID Q1 Q2 Q3
#3 110-P2 29 287 1
#4 110-P2 45 131 1
#5 110-P2 39 260 0
这样,您可以打印所有子数据帧,而无需将它们保存在其他地方。由于我不确定您打算如何处理您的数据,因此我无法判断这是否是最佳方法。但肯定会遍历您创建的数据框!
推荐阅读
- laravel - Laravel 6路线未定义
- precision - 当与推荐项目的相关性是二进制形式时,我们可以使用 NDCG 作为推荐系统指标吗?
- c# - 如何在 RestSharp 中将 json 文件数据解析为请求参数?
- bash - bash 不能用 or 语句比较字符串
- flutter - 如何在动态列表视图中导航到下一页 - Flutter
- android - 在 Flutter WebView 中检查连接并强制刷新
- html - 如何以较低的字体显示子菜单内容?
- spring-boot - Spring Boot 找不到 EmbeddedKafkaBroker Bean(不使用 SpringbootTest)
- swift - PDF视图不滚动
- html - 如何在下拉菜单外部单击时以 8 角捕获引导下拉关闭事件