2016-05-23 61 views
2

我的目标是比较列“年”与适当的列年(即1999年,2000年)的每个值。然后我想从相应的列中返回相应的值。例如,对于2004年的阿富汗(第一行),我想查找名为“2004”的列,并从包含阿富汗的行中返回值。基于行索引的数据帧返回值,列参考

这是表格。作为参考,本表是1999 - 2010年间单个定义年度的教育程度与每个国家的gdp之间的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 

有什么想法?

回答

4

使用df.loc

In [62]: df.loc[df['country']=='Afghanistan', '2004'].item() 
Out[62]: 5285461999.0 

df.loc[rows, columns]可以接受rowscolumns一个布尔系列(如df['country']=='Afghanistan')和列标签(如'2004')。它将返回布尔序列为True且位于指定列中的行的值。

一般来说,这可能会超过一个值,所以返回一个Series。但是,在这种情况下,系列中只有一个值。因此,要获得该值,请致电item method


注意它是从df张贴字符串表示不清楚数字列标签是否字符串是整数。如果数字列标签是整数,那么你就需要使用

df.loc[df['country']=='Afghanistan', 2004].item() 

(周围2004没有引号)。


如果你要赚很多这种形式的“查询”,你让希望将country列设置为索引:

df = df.set_index('country') 

然后,你可以在访问值细胞,其行标签是'Afghanistan',列标签是'2004'使用get_value

In [65]: df.get_value('Afghanistan', '2004') 
Out[65]: 5285461999.0 
+0

感谢,@unutbu。我最终使用了你建议的第二种方法,但我相信我也会为你找到第一个建议! – Aschharwood

+0

HI @unutbu,我更新了问题。我现在面临的问题是找到合适的指标值作为变量。非常感谢您的专业知识! – Aschharwood

+0

你在问一个有趣的问题,这个问题与我发布的答案完全不同。请回复这个问题并提出一个新的问题;我很乐意在那里提供建议。 (请注意,在问题上更改目标帖子会使写作答案的工作无效,并且可能会使回答者士气低落。) – unutbu