Python 将熊猫中的2个数据帧与一列中的用户定义值合并

Python 将熊猫中的2个数据帧与一列中的用户定义值合并,python,pandas,Python,Pandas,我们有两个数据帧: **df** ASSET_KEY IS_PRESENT FEED_NAME 1 2 3 4 5 df1 ASSET_KEY FEED_NAME 1 XYZ 2 PQR 4 ABC 最初,第一个数据帧存在,提要名称全部为空 我们需要填充IS_PRESENT->YES/NO,如果存在,则使用df1的FEED_名称填充FEED_名称 预期产出: df 我尝试合并,但不确定如何填充。在熊猫身上实现这一目标的最佳方法是

我们有两个数据帧:

**df**

ASSET_KEY IS_PRESENT FEED_NAME
1
2
3
4
5

df1
ASSET_KEY FEED_NAME
1           XYZ 
2           PQR
4           ABC
最初,第一个数据帧存在,提要名称全部为空

我们需要填充IS_PRESENT->YES/NO,如果存在,则使用df1的FEED_名称填充FEED_名称

预期产出:

df

我尝试合并,但不确定如何填充。在熊猫身上实现这一目标的最佳方法是什么?

让我们试试

out = df.merge(df1.assign(IS_PRESENT='Yes')).fillna({'IS_PRESENT' : 'No'})
让我们试试

out = df.merge(df1.assign(IS_PRESENT='Yes')).fillna({'IS_PRESENT' : 'No'})

import pandas as pd

### inputs ###############################################
# df to change
d1 = {"ASSET_KEY": [1, 2, 3, 4, 5],
      "IS_PRESENT": ["", "", "", "", ""],
      "FEED_NAME": ["", "", "", "", ""]}
df1 = pd.DataFrame(d1)

# df to ref
d2 = {"ASSET_KEY": [1, 2, 4],
      "FEED_NAME": ["XYZ", "PQR", "ABC"]}
df2 = pd.DataFrame(d2)

### solution ##############################################
# 1. merge on left (df)
df3 = pd.merge(df1[["ASSET_KEY", "IS_PRESENT"]], df2, on="ASSET_KEY", how="left")

# 2. fill "IS_PRESENT"
df3.loc[df3["FEED_NAME"].isnull(), "IS_PRESENT"] = "NO"
df3.loc[df3["FEED_NAME"].notnull(), "IS_PRESENT"] = "YES"

# 3. fill NaNs with ""
df3.fillna('', inplace=True)

print(df3)