python - Pandas Dataframe 过滤器和 For 循环

标签 python pandas for-loop pandas-groupby

我有一个包含许多列的数据框。我正在尝试过滤其中一列(“区域”)并根据“区域”列中的这 4 个区域中的每一个创建一个单独的数据框。然后运行一大块代码,其中包含对这 4 个独立数据帧中的每一个的一堆计算,而不必分别重写大块代码 4 次。

我知道我可以使用 .isin 函数进行列过滤,并针对我的 4 个区域(美国、新兴市场、欧洲、亚洲)执行此操作:

US = df[df['Region'].isin('US')]
EM = df[df['Region'].isin('EM')]
Europe = df[df['Region'].isin('Europe')]
Asia = df[df['Region'].isin('Asia')]

然后在 4 个新数据帧上运行我的代码块。但是我会分别执行我的大块计算代码 4 次,这太困惑了。我怎样才能在循环中执行此操作,以便我只需要编写一次大块代码?如果除了 for 循环之外我还可以使用另一个函数来执行此操作,那也很棒。感谢任何帮助-尝试学习。

虚拟代码:

df = pd.DataFrame({'a':[1,2,3,4,5,6], 'b':['cats','dogs','birds','pianos','elephant','dinos'], 'Region' : ['EM', 'US', 'US', 'Europe', 'Asia', 'Asia']})

最佳答案

只需迭代一个 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] 过滤的数据帧。

关于python - Pandas Dataframe 过滤器和 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53887292/

相关文章:

python - 如何将 2**n - 1 写为递归函数?

python - 过滤要替换为其列索引的值

javascript - jQuery:for循环元素属性变化,所有元素都有最后一个元素属性

python - 在 python 列表中返回多个数字

Python代码/函数布局

python - 如何从 kNeighborsClassifier 中查找前 n 个匹配项?

python - 导入scapy的最佳方法

python - 按 pandas 数据框中的数据分组

python - 如何导入扩展名为.xls的旧Excel文件?

Python:我的 for 循环不会迭代列表中的所有项目