我有一个包含许多列的数据框。我试图过滤这些列之一(“区域”),并基于“区域”列中的这4个区域中的每个区域创建一个单独的数据框。然后,运行一个大代码块,其中包含对这4个独立数据帧中的每一个的大量计算,而不必重写该大代码块4次。
我知道我可以使用.isin函数进行列过滤,并且可以对我的4个区域(美国,欧洲,欧洲,亚洲)执行此操作:
submitted
然后在4个新数据帧上运行我的代码块。但是我会分开执行我的大型计算代码块4次,这太混乱了。我该如何在循环中执行此操作,因此我只需要一次编写一大段代码?如果还有另一个功能,除了可以使用的for循环外,我还可以使用它。感谢任何尝试学习的帮助。
虚拟代码:
US = df[df['Region'].isin('US')]
EM = df[df['Region'].isin('EM')]
Europe = df[df['Region'].isin('Europe')]
Asia = df[df['Region'].isin('Asia')]
答案 0 :(得分:4)
只需迭代groupby
对象:
dfs = {}
for region, df_region in df.groupby('Region'):
# do something to df_region
# ...
# then store in dictionary
dfs[region] = df_region
然后通过dfs['US']
,dfs['Asia']
等访问单个数据帧。
您当然可以根据region
调整操作,但这不是必需的。每个df_region
代表一个由df[df['Region'] == region]
过滤的数据帧。