如何为Pandas的PR DataFrame新增固定值为CRNBJ的hub列
给Pandas DataFrame新增固定值列的实现
问题背景
现有通过Excel读取并筛选得到的Pandas DataFrame(命名为PR),包含planvol、actualvol等列;另有一个值为'CRNBJ'的变量hub。需要在PR的planvol、actualvol列之后新增名为hub的列,该列所有行的取值均为CRNBJ。
现有相关代码:
读取并筛选PR的代码
import pandas as pd PR = pd.read_excel(input_file_path, sheet_name='Daily Operating Plan', usecols='I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W') PR = PR.iloc[[10,14,17,27,35,40,45,50]]
hub变量相关代码
hub = df['hub'] print(hub) # 输出结果:CRNBJ
实现方案
方法一:精准插入到指定位置
使用insert方法可以直接在actualvol列之后插入新列,代码如下:
# 获取actualvol列的索引位置,在其后插入新列 insert_position = PR.columns.get_loc('actualvol') + 1 # 插入hub列,所有行赋值为hub变量的值 PR.insert(insert_position, 'hub', hub)
方法二:先新增列再调整顺序
如果不需要严格控制插入时机,也可以先新增列,再调整列的位置:
# 新增hub列并赋值 PR['hub'] = hub # 调整列顺序,将hub移到actualvol之后 column_list = PR.columns.tolist() actualvol_index = column_list.index('actualvol') # 取出hub列并插入到actualvol后面 column_list.insert(actualvol_index + 1, column_list.pop(column_list.index('hub'))) # 重新设置DataFrame的列顺序 PR = PR[column_list]
预期输出
执行上述代码后,PR的结构示例如下:
| planvol | actualvol | hub |
|---|---|---|
| 10 | 20 | CRNBJ |
| 11 | 21 | CRNBJ |
| 12 | 22 | CRNBJ |
内容的提问来源于stack exchange,提问作者RobinHood
相关产品推荐
相关产品推荐

