如何在Pandas DataFrame中从现有列创建新列?(实例演示)
嘿,这个需求其实超级简单,用Pandas的几种基础操作就能轻松实现,下面给你分享几个常用的方法:
方法一:直接列赋值(最直观易懂)
这是最直接的方式,你只需要通过列名直接给DataFrame添加新列,把原列的值直接赋值过去就行,完全不用担心行的对应问题——Pandas会自动帮你对齐索引。
代码示例:
import pandas as pd # 先构造你的原始DataFrame df = pd.DataFrame({ '2019Q4': [20, 56, 63], '2020Q4': [10, 15, 14] }) # 新增目标列 df['year2019'] = df['2019Q4'] df['year2020'] = df['2020Q4'] # 打印结果 print(df)
方法二:使用assign()方法(链式操作友好)
如果你习惯用链式调用的写法,或者想保留原始DataFrame不被修改,assign()方法会是个不错的选择,它可以一次性创建多个新列并返回一个新的DataFrame。
代码示例:
# 生成带新列的新DataFrame(原df保持不变) new_df = df.assign( year2019=df['2019Q4'], year2020=df['2020Q4'] ) # 如果不需要保留原df,也可以直接覆盖 # df = df.assign(year2019=df['2019Q4'], year2020=df['2020Q4'])
方法三:批量处理(适合多列场景)
如果你的DataFrame里有很多类似YYYYQN格式的列,不想手动一个个写赋值语句,可以用循环批量生成新列,效率更高:
代码示例:
for col in df.columns: # 提取列名里的年份部分(前4位) year_part = col[:4] # 构造新列名 new_col_name = f'year{year_part}' # 赋值新列 df[new_col_name] = df[col]
运行任意一种方法后,你都会得到想要的结果:
| 2019Q4 | 2020Q4 | year2019 | year2020 | |
|---|---|---|---|---|
| 0 | 20 | 10 | 20 | 10 |
| 1 | 56 | 15 | 56 | 15 |
| 2 | 63 | 14 | 63 | 14 |
内容的提问来源于stack exchange,提问作者rakesh
相关产品推荐
相关产品推荐

