2016-05-23 56 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