将DataFrame按id_ind分组转为DataFrame字典并还原原DataFrame
Pandas 按个体分组生成DataFrame字典及还原方案
1. 按id_ind分组生成DataFrame字典
如果之前得到的是numpy值组成的字典,大概率是误用了提取数组的操作(比如x.values或x.to_numpy())。正确的做法是直接遍历groupby的结果,将每个分组的完整DataFrame存入字典:
import pandas as pd # 示例DataFrame data = { 'id_ind': [1,1,2,2,3], 'col1': ['a','b','c','d','e'], 'col2': [10,20,30,40,50] } df = pd.DataFrame(data) # 生成以个体编号为键的DataFrame字典 df_dict = {group_id: group_df for group_id, group_df in df.groupby('id_ind')}
验证:打印df_dict[1]会得到id_ind为1的完整子DataFrame,而非numpy数组。
2. 将字典还原为原DataFrame
直接用pd.concat()合并字典中所有子DataFrame即可,如需和原DataFrame顺序一致,可补充排序和索引重置:
# 合并所有子DataFrame并还原 restored_df = pd.concat(df_dict.values(), axis=0) # 可选:按id_ind排序并重置索引,匹配原数据结构 restored_df = restored_df.sort_values('id_ind').reset_index(drop=True)
这样得到的restored_df和原df结构、内容完全一致(忽略索引差异的话,不加reset_index也可)。
内容的提问来源于stack exchange,提问作者Álvaro A. Gutiérrez-Vargas
相关产品推荐
相关产品推荐

