检查其他Dataframe上是否存在值

问题描述 投票:1回答:1

我有两个数据帧F1和F2,包含列id1,id2。

F1包含两列F1[id1,id2]。 F2包含三列[id1,id2,描述]我想测试F2['id1']中的F1['id1']exists或者F2 ['id2'] exists inF1 ['id2']然后我必须在F1中添加一个colmun与F2中的id1或id2的描述。 F1和F2的比赛是are HERE。我参加F1的输出是 also HERE我创造了F1和F2这样的

     F1 = {'id1': ['x22', 'x13','NaN','x421'],'id2':['NaN','223','788','NaN']}
     F1 = pd.DataFrame(data=F1)
     F2 = {'id1': ['x22', 'NaN','NaN','x413','x421'],'id2':['NaN','223','788','NaN','233'],'Description':['California','LA','NY','Havnover','Munich']}
     F2 = pd.DataFrame(data=F2)

其实我尝试了几种解决方案。但没有什么能帮助我做到这一点。请帮忙

python pandas list dataframe np
1个回答
0
投票

使用:

#if necessary replace string NaN to missing values
F1 = F1.replace('NaN', np.nan)
F2 = F2.replace('NaN', np.nan)

对于每一列,删除DataFrame.drop_duplicates的重复项,DataFrame.dropna丢失的valeus,并通过idDataFrame.set_index列创建索引:

s1 = F2.drop_duplicates('id1').dropna(subset=['id1']).set_index('id1')['Description']
s2 = F2.drop_duplicates('id2').dropna(subset=['id2']).set_index('id2')['Description']

然后使用来自Series.mapF1的列的Series.combine_first

F1['Description'] = F1['id1'].map(s1).combine_first(F1['id2'].map(s2))
print (F1)
    id1  id2 Description
0   x22  NaN  California
1   x13  223          LA
2   NaN  788          NY
3  x421  NaN      Munich
© www.soinside.com 2019 - 2024. All rights reserved.