如何使用Python Pandas按DataFrame的B列唯一值分组
解决方案
可以用Pandas的分组功能结合列表推导式快速实现需求,具体步骤如下:
1. 准备DataFrame(如果已有可跳过)
先构造与你提供的结构一致的示例DataFrame:
import pandas as pd data = { 'A': ['1990-02', '1990-03', '1999-05', '1992-08', '1996-12', '2020-01', '1990-05', '1995-08', '1999-11', '2021-12'], 'B': [1, 1, 1, 2, 2, 2, 3, 3, 3, 3] } df = pd.DataFrame(data)
2. 分组转换为目标格式
执行以下代码即可得到你需要的嵌套列表结构:
result = [group.values.tolist() for _, group in df.groupby('B', sort=False)]
结果验证
输出result会得到:
[[['1990-02', 1], ['1990-03', 1], ['1999-05', 1]], [['1992-08', 2], ['1996-12', 2], ['2020-01', 2]], [['1990-05', 3], ['1995-08', 3], ['1999-11', 3], ['2021-12', 3]]]
关键说明
df.groupby('B', sort=False):按B列的唯一值分组,sort=False确保分组顺序和原DataFrame中B值首次出现的顺序一致(若不需要保留顺序可移除该参数)group.values.tolist():将每个分组的子DataFrame直接转换为嵌套列表,每一行对应[A列值, B列值]的子列表
内容的提问来源于stack exchange,提问作者N_ote
相关产品推荐
相关产品推荐

