簡體   English   中英

Map 值從一個 dataframe 列正確到另一列 dataframe

[英]Map values from one dataframe column properly to other column dataframe

我有兩個數據框,其中一列是常見的。 如果匹配正確,我想將數據幀和 map 數據幀 2 中第二列的值與第一列的值進行比較。 例如,我有一個數據框說treasury_shares 列entity_Id 另一個數據框說soiValues 列entityId 和attribute_value。 我想比較 entity_Id 並在數據框 A 中創建一個新列,其中 attribute_value 值正確分配給數據框 treasury_shares 中的 entity_Id,就像它們在數據框 soiValues 中一樣。

目前我正在做的是treasury_shares.insert(6, "SOI priority",soiValues['attribute_value'], True)我只插入attribute_value值,因為它是我以數據框soiValues的形式從數據庫中獲得的值。 但是使用我的方法,SOI 優先級值在數據幀 tresury_shared 中以不正確的方式分配給各個實體 ID。 分配了錯誤的屬性值值。

誰能幫我建立這個邏輯? 下面的代碼會起作用嗎?

for index, row in treasury_shares.iterrows():
    for index,row in soiValues.iterrows():
        if (treasury_shares['entity_id']==soiValues['entity_id']):
            treasury_shares['SOI priority']=soiValues['attribute_value']

您應該在 Pandas 庫中查看merge function

相同的快速演示 -

import pandas as pd  
      
lst = [['A', 1], ['B', 2], 
       ['C', 3], ['D', 4]] 
   
df1 = pd.DataFrame(lst, columns =['x1', 'x2']) 

lst2 = [['A', 'Hello'], ['B', 'Hola'], 
       ['C', 'Hi'], ['D', 'Hey']] 
     
df2 = pd.DataFrame(lst, columns =['x1', 'x3'])

df1.merge(df2,on='x1',how='left')

如果df1中有x1的值,而df2中沒有相應的值,您將在x3列中得到一行NaN

如果df2中有x1的值,而df1中沒有對應的值,則它不會顯示在 output 當前,但可以通過修改'how'參數來添加

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM