2016-12-29 185 views
2

我有兩個數據幀,我需要使用第一個數據幀向第二個數據幀添加一個新列,如果它存在於第一個數據幀中,則其值爲TRUE否則FALSE根據來自另一個數據幀的值將列添加到數據幀

第一數據幀具有州立大學和城鎮地區名稱在美國

State RegionName 
    0 Alabama Auburn 
    1 Alabama Florence 
    2 Alabama Jacksonville 
    3 Illinois Chicago 

第二個數據幀具有每季度的增長率。它收錄在國家和RegionName

      2008q3   2008q4 
State  RegionName     
Alabama  Jacksonville 499766.666667 487933.333333 
California Los Angeles 469500.000000 443966.666667 
Illinois Chicago  232000.000000 227033.333333 

所以輸出數據幀將

      2008q3   2008q4   univ_town 
State  RegionName     
Alabama  Jacksonville 499766.666667 487933.333333 TRUE 
California Los Angeles 469500.000000 443966.666667 FALSE 
Illinois Chicago  232000.000000 227033.333333 TRUE 

任何幫助將是非常讚賞

+1

這一個是從Coursera介紹數據科學...我只是完成了該課程。您不需要執行所描述的內容,只需執行內部合併即可獲得university_towns數據框,然後在all_towns和university_towns數據框之間區別。查看pandas index.difference函數 – Celebrian

+0

對不起,我應該提到我已經完成了,但是我試圖看看是否有更多pythonic解決方案。 –

+0

我明白了,這就是爲什麼我高舉了答案。但是,如果您需要快速修復,請添加我的解決方案作爲評論:-) – Celebrian

回答

4

一個各種可能的方式做是使用Index.isin方法來檢查對應於多索引DF2的索引鍵是否存在跨兩個級別的DF1中的相應列。

然後使用np.where創建布爾面具的&條件後做賦值操作()得到滿足,否則()。

cond1 = df2.index.isin(df1['State'], level=0) # Check level=0 and df1['State'] 
cond2 = df2.index.isin(df1['RegionName'], level=1) # Check level=1 and df1['RegionName'] 

df2.assign(univ_town=np.where(cond1 & cond2, 'TRUE', 'FALSE')) 

enter image description here

相關問題