![](/img/trans.png)
[英]Map values from one dataframe to new columns in other based on column values - Pandas
[英]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.