Python 基于数据帧拆分的列值列表

Python 基于数据帧拆分的列值列表,python,pandas,Python,Pandas,我有一个很大的区域数据集,我想根据区域列表将datframe拆分为多个数据帧 例如: regions val1 val2 A 1 2 A 1 2 B 1 2 C 1 2 D 1 2 E 1 2 A

我有一个很大的区域数据集,我想根据区域列表将datframe拆分为多个数据帧

例如:

regions         val1    val2
A                1        2
A                1        2
B                1        2
C                1        2
D                1        2
E                1        2
A                1        2
我想通过分组(A,E),(B,C,D)来拆分上述数据帧


我通过手动指定
df[(df['regions']='A')|(df['regions']='E')]
尝试了这一点。我希望避免在创建数据帧时手动指定这些区域代码。我对熊猫很陌生。还有其他方法吗?

您可以创建
数据框架的字典
,以避免手动创建具有词汇理解能力的数据框架,并进行过滤:

L =  [('A','E'), ('B','C','D')]

dfs = {'_'.join(x):df[df['regions'].isin(x)] for x in L}
print (dfs)
{'A_E':   regions  val1  val2
0       A     1     2
1       A     1     2
5       E     1     2
6       A     1     2, 'B_C_D':   regions  val1  val2
2       B     1     2
3       C     1     2
4       D     1     2}
对于每个
DataFrame
选择键:

print (dfs['A_E'])
  regions  val1  val2
0       A     1     2
1       A     1     2
5       E     1     2
6       A     1     2

print (dfs['B_C_D'])
  regions  val1  val2
2       B     1     2
3       C     1     2
4       D     1     2

每年的解决办法是:

df1 = df[df['regions'].isin(('A','E'))]
print (df1)
  regions  val1  val2
0       A     1     2
1       A     1     2
5       E     1     2
6       A     1     2

df2 = df[df['regions'].isin(('B','C','D'))]
print (df2)
  regions  val1  val2
2       B     1     2
3       C     1     2
4       D     1     2
df1 = df[df['regions'].isin(('A','E'))]
print (df1)
  regions  val1  val2
0       A     1     2
1       A     1     2
5       E     1     2
6       A     1     2

df2 = df[df['regions'].isin(('B','C','D'))]
print (df2)
  regions  val1  val2
2       B     1     2
3       C     1     2
4       D     1     2