我正在尝试编写一个函数,将一个数据帧“ df”拆分为较小的数据帧df1,df2 ... dfn,以便将具有相同ID(来自“ UNIT-ID”列)的所有记录组合在一起并存储在那些较小的数据框中,分别在文件夹中。 我希望它们命名为df1,df2..dfn
for i, g in df.groupby('ORISPL-UNIT'):
df['df' + **<loops to number the dataframes>** ] = g
我希望用df后的数字1,2,3..n来命名数据帧。我该如何在循环中执行此操作?当groupby由groupby函数形成时,我希望在循环中创建数据框。
昨天我曾问过一个类似的question,但有一位成员标记为重复。我正在尝试更具体地说明我想如何在此问题中处理问题
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-P5 13 413 1
110-P5 13 259 1
110-P5 16 226 1
110-P5 49 456 1
110-P5 39 275 1
110-P10 41 189 0
110-P10 32 269 0
110-P10 31 123 1
110-P10 32 487 0
110-P10 24 398 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
df3:
UNIT-ID Q1 Q2 Q3
110-P5 13 413 1
110-P5 13 259 1
110-P5 16 226 1
110-P5 49 456 1
110-P5 39 275 1
df4:
UNIT-ID Q1 Q2 Q3
110-P10 41 189 0
110-P10 32 269 0
110-P10 31 123 1
110-P10 32 487 0
110-P10 24 398 0
df5:
UNIT-ID Q1 Q2 Q3
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
110-15 34 390 1
110-15 67 238 1
任何帮助将不胜感激!
答案 0 :(得分:1)
使用locals
可以通过不推荐的方式完成工作,您可以使用dict
来存储数据帧
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
使用字典
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