如何筛选DataFrame并将指定ID_2对应的Value转为新列
解决DataFrame筛选与列转置问题
原始数据集
| ID | ID_2 | Value |
|---|---|---|
| 12 | 34 | 100 |
| 12 | 56 | 200 |
| 12 | 78 | 300 |
需求说明
- 筛选出
ID_2取值为34、56、78的行 - 将每个
ID_2对应的Value值转为独立列,最终得到指定结构的DataFrame
实现代码
import pandas as pd # 初始化原始DataFrame df = pd.DataFrame({ 'ID': [12, 12, 12], 'ID_2': [34, 56, 78], 'Value': [100, 200, 300] }) # 1. 筛选目标行 target_id2 = [34, 56, 78] filtered_df = df[df['ID_2'].isin(target_id2)] # 2. 转置为多列并自定义列名 result = filtered_df.pivot(index='ID', columns='ID_2', values='Value').reset_index() result.columns = ['ID', 'New column', 'New column_2', 'New column_3'] print(result)
代码说明
- 筛选逻辑:利用
isin()方法快速匹配ID_2在目标列表中的记录,精准过滤数据; - 列转置:
pivot()方法通过指定index(分组依据ID)、columns(转置的列ID_2)、values(取值列Value),实现行转列; - 列名调整:将
pivot生成的默认列名(原ID_2的数值)替换为需求中的自定义名称,reset_index()确保ID作为普通列存在。
最终输出结果
| ID | New column | New column_2 | New column_3 |
|---|---|---|---|
| 12 | 100 | 200 | 300 |
内容的提问来源于stack exchange,提问作者jsang
相关产品推荐
相关产品推荐

