如何按DataFrame的col1分组并生成组内行的字典列表?
实现Pandas按列分组并将行转为字典列表
步骤1:构建原始DataFrame
先复现你提供的数据集:
import pandas as pd df = pd.DataFrame({ 'col1': [1, 1, 2, 2], 'col2': [3, 3, 4, 4], 'col3': [5, 6, 5, 6] })
方法1:重命名列后利用to_dict('records')生成结果
这种方法更简洁,先把原列名col2、col3改成目标键名col_2、col_3,再通过分组+apply批量生成字典列表:
# 重命名列匹配目标键名 df_renamed = df.rename(columns={'col2': 'col_2', 'col3': 'col_3'}) # 分组并生成字典列表 result = df_renamed.groupby('col1')\ .apply(lambda group: group[['col_2', 'col_3']].to_dict('records'))\ .reset_index(name='rows_group')
方法2:手动构造字典(无需重命名列)
如果不想修改原始列名,可在分组逻辑里手动遍历行构造字典:
result = df.groupby('col1')\ .apply(lambda group: [ {'col_2': row['col2'], 'col_3': row['col3']} for _, row in group.iterrows() ])\ .reset_index(name='rows_group')
验证结果
执行上述任意一种方法后,打印result即可得到目标格式:
print(result) # 输出: # col1 rows_group # 0 1 [{'col_2': 3, 'col_3': 5}, {'col_2': 3, 'col_3': 6}] # 1 2 [{'col_2': 4, 'col_3': 5}, {'col_2': 4, 'col_3': 6}]
内容的提问来源于stack exchange,提问作者wedrano de carvalho
相关产品推荐
相关产品推荐

