我已经将数据帧“ 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
由于@ W-B回答了question,因此我使用了以下代码来实现这一目标。
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保存在一个物理位置并再次读取它,因为df仍存储在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
答案 0 :(得分: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
这样,您可以打印所有子数据帧,而不必将其保存在其他位置。由于我不确定您打算如何处理数据,因此我无法确定这是否是最佳方法。但是肯定会遍历您创建的数据框!