熊猫数据框过滤器和For循环

时间:2018-12-21 15:29:35

标签: python pandas for-loop pandas-groupby

我有一个包含许多列的数据框。我试图过滤这些列之一(“区域”),并基于“区域”列中的这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')]

1 个答案:

答案 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]过滤的数据帧。