如何通过循环从单个DataFrame拆分出多个子DataFrame
按Sub_Type拆分DataFrame的实现方案
原始DataFrame
| Type | Sub_Type | Count |
|---|---|---|
| A | AA | 10 |
| A | AA | 5 |
| B | AA | 9 |
| B | BA | 4 |
| B | BA | 5 |
| A | BA | 2 |
| B | CA | 8 |
| B | CA | 5 |
| A | CA | 3 |
需求
按Sub_Type字段将上述DataFrame拆分为多个子DataFrame,每个子DataFrame对应唯一的Sub_Type值。
实现步骤
1. 准备数据(已有DataFrame可跳过)
通过pandas创建原始DataFrame:
import pandas as pd data = { 'Type': ['A', 'A', 'B', 'B', 'B', 'A', 'B', 'B', 'A'], 'Sub_Type': ['AA', 'AA', 'AA', 'BA', 'BA', 'BA', 'CA', 'CA', 'CA'], 'Count': [10, 5, 9, 4, 5, 2, 8, 5, 3] } df = pd.DataFrame(data)
2. 按Sub_Type拆分
利用pandas的groupby方法,将拆分后的子DataFrame存储到字典中,方便后续调用:
# 分组拆分,键为Sub_Type值,值为对应子DataFrame sub_type_dfs = {st: group for st, group in df.groupby('Sub_Type')}
3. 获取子DataFrame
通过字典键直接获取对应子表:
- 获取
AA对应的子DataFrame:
print(sub_type_dfs['AA'])
输出:
| Type | Sub_Type | Count |
|---|---|---|
| A | AA | 10 |
| A | AA | 5 |
| B | AA | 9 |
- 获取
BA对应的子DataFrame:
print(sub_type_dfs['BA'])
输出:
| Type | Sub_Type | Count |
|---|---|---|
| B | BA | 4 |
| B | BA | 5 |
| A | BA | 2 |
- 获取
CA对应的子DataFrame:
print(sub_type_dfs['CA'])
输出:
| Type | Sub_Type | Count |
|---|---|---|
| B | CA | 8 |
| B | CA | 5 |
| A | CA | 3 |
内容的提问来源于stack exchange,提问作者kanika
相关产品推荐
相关产品推荐

