我有2个数据帧,每个数据帧有2列(如图所示)。我试图定义一个函数或执行操作来扫描df2
上的df1
并存储
如果df2["values"]
与df1["values"]
匹配,则df2["ID"]
中的df1["ID"]
。
我希望结果如New_df1
所示(图片)
我已经尝试了一个带有函数append()
的for循环,但要让它工作真的很棘手......
答案 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