Python 使用现有变量引用列名称

Python 使用现有变量引用列名称,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个混乱的马拉松赢家数据框架,包括他们的国家,他们赢得马拉松的年份,以及他们国家自1970年以来每年的gdp/人均。我想创建一个gdp变量,具体表示他们赢得比赛当年的gdp 数据示例: YEAR Winner_Name Winner_Country Time Gender Marathon_City Country 1970 1971 1977 Dan Cloeter USA 2:17:52 M C

我有一个混乱的马拉松赢家数据框架,包括他们的国家,他们赢得马拉松的年份,以及他们国家自1970年以来每年的gdp/人均。我想创建一个gdp变量,具体表示他们赢得比赛当年的gdp

数据示例:

YEAR    Winner_Name    Winner_Country   Time    Gender  Marathon_City   Country 1970    1971     
1977    Dan Cloeter    USA              2:17:52 M       Chicago         USA     5247.0  5687.0  
1978    Mark Stanforth USA              2:19:20 M       Chicago         USA     5247.0  5687.0
如图所示,1970年的数字是当年获奖国家gdp的一个变量,但也是可变年份的一个可能结果。我想创建一个可变gdp,它使用可变年份的结果来选择赢家所在国家gdp的年份

我最初尝试的是: 我希望这并不是对每个观察都进行迭代

YEAR = df_gdp['YEAR']
df_gdp['gdp'] = df_gdp[YEAR]
导致这个错误

KeyError:“[int64索引([1977、1978、1979、1980、1981、1982、1983、1984、1985、1986、\n…\n 2009、2010、2011、2013、2014、2015、2016、2017、2018、2019],\n dtype='int64',length=258)]均不在[列]中。”

范例

以这个数据集为例

letter a b c d
a      1 3 4 2  
b      4 3 2 1 
c      2 1 4 3
d      3 4 2 1
预期结果

letter a b c d  correct answer
a      1 3 4 2  1  
b      4 3 2 1  3 
c      2 1 4 3  4
d      3 4 2 1  1
您可以尝试以下方法:

letters=df.letter.values
correct_answer=[]
for index,l in enumerate(letters):
   correct_answer.append(df[l][index])

df['correct_answer']=correct_answer

df[some_list]
的意思是“给我df中
some_list
中的所有列。如果您试图将该列表(或在本例中的系列)指定为新列中的值,请取消
df[]
部分:
=df[YEAR]->=年
。如果这不是您想要的,请包括您所需输出的样本预期输出是什么?