根据python或R中的条件比较两个数据帧和存储值

时间:2018-04-14 21:49:46

标签: python pandas dataframe

我有2个数据帧,每个数据帧有2列(如图所示)。我试图定义一个函数或执行操作来扫描df2上的df1并存储 如果df2["values"]df1["values"]匹配,则df2["ID"]中的df1["ID"]

我希望结果如New_df1所示(图片) 我已经尝试了一个带有函数append()的for循环,但要让它工作真的很棘手......

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以通过pandas.concat执行此操作,排序并删除druplicates:

import pandas as pd, numpy as np

df1 = pd.DataFrame([[i, np.nan] for i in list('abcdefghik')],
                   columns=['ID', 'Values'])

df2 = pd.DataFrame([['a', 2], ['c', 5], ['e', 4], ['g', 7], ['h', 1]],
                   columns=['ID', 'Values'])

res = pd.concat([df1, df2], axis=0)\
        .sort_values(['ID', 'Values'])\
        .drop_duplicates('ID')

print(res)

#   ID  Values
# 0  a     2.0
# 1  b     NaN
# 1  c     5.0
# 3  d     NaN
# 2  e     4.0
# 5  f     NaN
# 3  g     7.0
# 4  h     1.0
# 8  i     NaN
# 9  k     NaN