我的目标是将“年份”一栏中的每个值与适当的年份(即1999年、2000年)进行比较。然后,我想从相应的列返回相应的值。例如,对于阿富汗(第一行),即2004年,我希望找到名为" 2004“的列,并从包含阿富汗的行返回值。
这是桌子。为供参考,本表是1999-2010年单个规定年份的教育程度与每个国家的国内生产总值之间的sql联接的结果。我的最终目标是从教育数据的年份返回gdp。
country year men_ed_yrs women_ed_yrs total_ed_yrs 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
0 Afghanistan 2004 11 5 8 NaN NaN 2461666315 4128818042 4583648922 5285461999 6.275076e+09 7.057598e+09 9.843842e+09 1.019053e+10 1.248694e+10 1.593680e+10
1 Albania 2004 11 11 11 3414760915 3632043908 4060758804 4435078648 5746945913 7314865176 8.158549e+09 8.992642e+09 1.070101e+10 1.288135e+10 1.204421e+10 1.192695e+10
2 Algeria 2005 13 13 13 48640611686 54790060513 54744714110 56760288396 67863829705 85324998959 1.030000e+11 1.170000e+11 1.350000e+11 1.710000e+11 1.370000e+11 1.610000e+11
3 Andorra 2008 11 12 11 1239840270 1401694156 1484004617 1717563533 2373836214 2916913449 3.248135e+09 3.536452e+09 4.010785e+09 4.001349e+09 3.649863e+09 3.346317e+09
4 Anguilla 2008 11 11 11 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN到目前为止,我的做法是:
for value in df_combined_column_named['year']: #loops through each year in year column
if value in df_combined_column_named.columns有什么想法吗?
发布于 2016-05-23 23:45:03
使用df.loc
In [62]: df.loc[df['country']=='Afghanistan', '2004'].item()
Out[62]: 5285461999.0df.loc[rows, columns]可以接受用于rows的布尔序列(如df['country']=='Afghanistan')和用于columns的列标签(如'2004')。它将返回布尔序列为True的行和指定列中的值。
通常,这可以是多个值,因此返回一个Series。但是,在这种情况下,“系列”中只有一个值。因此,要获得值,请调用 method。
注意,从df的已发布字符串表示形式来看,数字列标签是否为字符串是整数。如果数字列标签是整数,则需要使用
df.loc[df['country']=='Afghanistan', 2004].item()(2004周围没有引号)。
如果要对此表单进行大量“查询”,则希望将country列设置为索引:
df = df.set_index('country')然后可以使用'Afghanistan'访问行标签为'2004'的单元格中的值,并使用get_value访问其列标签为'2004'的单元格中的值。
In [65]: df.get_value('Afghanistan', '2004')
Out[65]: 5285461999.0https://stackoverflow.com/questions/37402093
复制相似问题