【发布时间】:2019-05-22 01:46:37
【问题描述】:
我有一个包含许多列的数据框。我正在尝试过滤其中一个列(“区域”)并根据“区域”列中的这 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']})
【问题讨论】:
-
你能提供一些关于这个“大代码块”的线索吗?
-
为什么需要拆分
DataFrame?如果每个区域的计算都相似,那么您可以使用np.select或字典将区域映射到每个计算的区域特定值。但如果不知道自己需要做什么,就很难提供更多指导。
标签: python pandas for-loop pandas-groupby