如何向Pandas DataFrame添加新列,值来自指定列名的列?
如何根据指定列名添加新列到Pandas DataFrame?
原始数据
你拥有如下Pandas DataFrame:
import pandas as pd df = pd.DataFrame({ 'Col1': [2, 74, 37, 36, 95], 'Col2': [36, 80, 9, 26, 16], 'Col3': [20, 4, 7, 55, 91], 'Col4': ['Col2','Col2','Col2','Col2','Col2'] })
需求
需要添加新列Col0,其值来自列Col2(因为Col4的取值均为Col2),期望得到的结果如下:
df = pd.DataFrame({ 'Col1': [2, 74, 37, 36, 95], 'Col2': [36, 80, 9, 26, 16], 'Col3': [20, 4, 7, 55, 91], 'Col4': ['Col2','Col2','Col2','Col2','Col2'], 'Col0': [36, 80, 9, 26, 16] })
解决方案
方法1:直接赋值(适用于当前Col4取值固定的场景)
由于Col4所有值都是Col2,直接将Col2列的值赋给新列Col0即可:
df['Col0'] = df['Col2']
方法2:动态取值(适用于Col4取值可能变化的通用场景)
如果后续Col4的取值会有不同的列名,需要根据每行Col4指定的列名动态取值,可以使用以下两种方式:
- 使用
lookup方法:
df['Col0'] = df.lookup(df.index, df['Col4'])
- 使用
apply方法:
df['Col0'] = df.apply(lambda row: row[row['Col4']], axis=1)
验证结果
执行上述代码后,输出的DataFrame将与你期望的结果完全一致。
内容的提问来源于stack exchange,提问作者Евгения
相关产品推荐
相关产品推荐

