python - 检查其他 Dataframe 上是否存在值

标签 python pandas list dataframe np

我有两个数据框 F1 和 F2,其中包含列 id1、id2。

F1 包含两列F1[id1,id2]
F2 包含三列 [id1,id2,Description] 我想测试 F2['id1'] 是否存在于 F1['id1'] 或 F2['id2']存在于 F1 中['id2'] 那么我必须在 F1 中添加一个列,并在 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)

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

最佳答案

用途:

#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并按 DataFrame.set_indexid 列创建索引:

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.mapF1Series.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

关于python - 检查其他 Dataframe 上是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55435919/

相关文章:

python - 如何快速将 pandas 数据框中的某些集合与一组联合起来

python - 使用 for 循环从列表中删除字典

python - Django多表单1 View ..表单错误问题

python - pandas.read_csv() 是否有办法在将文件读入 DataFrame 时删除 '\s' 和 '\t' 字符?

python - 数据框的原始值没有变化

python - 传递列表并将其长度设置为python中的默认参数

jquery - 将列表更改为下拉列表并在 jQuery 中单击选项

python - Flask-Assets 和 Flask-Testing 抛出 RegisterError : Another bundle is already registered

python - IPython 打印输出损坏

python - 有条件地在 pandas 中的一个数据框中移动多个部分