python - 基于 Pandas 数据框拆分的列值列表
问题描述
我有大量的区域数据集,我想根据区域列表将数据框拆分为多个数据框。
例子:
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)拆分上述数据框
DF1:
regions val1 val2
A 1 2
A 1 2
E 1 2
A 1 2
DF2:
B 1 2
C 1 2
D 1 2
我通过手动指定df[(df['regions'] == 'A') | (df['regions'] == 'E')]
. 我想避免在创建数据框时手动指定这些区域代码。我对熊猫很陌生。有什么办法吗?
解决方案
您可以创建字典以避免手动创建具有字典理解和过滤DataFrame
的 DataFrame :Series.isin
boolean indexing
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
推荐阅读
- c - 从一个矩阵,创建 2 个向量,其中包含列和行的偶数元素,另一个具有奇数
- sql - 无法创建外键关系 (SQL Server)
- ios - 我这里需要核心数据迁移吗?
- pymol - 如何仅对 PyMOL 中的主链氮原子着色?
- javascript - 使用 for 循环创建 JavaScript JSON 对象
- c++ - 这里有必要使用 const 吗?
- javascript - CSS grid items stacking on top of each other instead of respecting grid-area
- java - 基本身份验证 Apache olingo
- php - Woocommerce 价格计算中的舍入问题
- puppeteer - Puppeter 的 page.pdf API 中的页眉和页脚打印是如何工作的?