基于动态NAME列拆分DataFrame为多个独立DataFrame或列表的求助
解决按NAME列拆分DataFrame为多个独立DataFrame的问题
嘿,这个问题其实用pandas的groupby就能轻松搞定!你之前可能没注意到,groupby返回的对象是可以迭代的,每次迭代会给出分组名称和对应的子DataFrame,刚好满足你的需求。
核心实现步骤
- 对原DataFrame按
NAME列分组 - 将分组结果转换为字典(键是
NAME的取值,值是对应子DataFrame),或者直接迭代分组来处理每个子DataFrame
代码示例
假设你的原DataFrame名为df,代码如下:
import pandas as pd # 1. 按NAME列分组 grouped_df = df.groupby('NAME') # 2. 转换为字典,方便快速访问每个子DataFrame df_groups = {group_name: group_data for group_name, group_data in grouped_df}
如何访问拆分后的DataFrame
现在你可以通过字典的键直接获取对应分组的DataFrame:
- 获取
S N对应的DataFrame:df_groups['S N'] - 获取
H H对应的DataFrame:df_groups['H H'] - 其他分组比如
O S、L S同理
如果想把每个子DataFrame单独赋值给变量,也很简单:
df_sn = df_groups['S N'] df_hh = df_groups['H H'] df_os = df_groups['O S'] df_ls = df_groups['L S'] df_dl = df_groups['D L']
遍历所有分组(可选)
如果需要批量处理每个子DataFrame,可以直接遍历grouped_df对象:
for group_name, group_data in grouped_df: print(f"=== DataFrame for {group_name} ===") print(group_data) print("\n")
这样就能得到你期望的多个独立DataFrame,每个只包含NAME列相同值的行~
内容的提问来源于stack exchange,提问作者user890234
相关产品推荐
相关产品推荐

