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)