Python 使用现有变量引用列名称
我有一个混乱的马拉松赢家数据框架,包括他们的国家,他们赢得马拉松的年份,以及他们国家自1970年以来每年的gdp/人均。我想创建一个gdp变量,具体表示他们赢得比赛当年的gdp 数据示例: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
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]->=年
。如果这不是您想要的,请包括您所需输出的样本预期输出是什么?