用其他数据框的值填充数据框的空单元格

Fill empty cells of dataframe with values from other dataframe

我想填充数据框的空单元格。 单元格应填充可在其他数据框中找到的值或字符串 其中“Y”是相同的。 我考虑过使用字典,但无法让它工作。 期望输出是用值“7”填充 df1(第 1 行)中的空单元格。 数据帧的排序和长度将不相同。 df1 也将包含重复项。

df1 = pd.DataFrame({'Z': ['a', 'b', 'c', 'a', 'a'],
                    'Y': [6,'',8, 6, 6]
                   })
df2 = pd.DataFrame({'Z': ['a', 'b', 'c', 'd', 'e'],
                   'Y': [6, 7, 8, 9, 1],
                   })
df1
Z  Y
0  a  6
1  b   
2  c  8
3  a  6
4  a  6
df2
Z  Y
0  a  6
1  b  7
2  c  8
3  d  9
4  e  1

我尝试了什么:

dic = df2.set_index('Z').to_dict()['Y']
df1.replace({'Y': {'' :dic}})

我收到以下错误:“TypeError:无法散列的类型:'numpy.ndarray'”
感谢您的帮助。

您可以通过 Series.map 测试空行的掩码仅替换匹配的行,如果没有匹配得到缺失值:

dic = df2.set_index('Z')['Y'].to_dict()

m = df1['Y'].eq('')
#if need test missing values
#m = df1['Y'].isna()
df1.loc[m, 'Y'] = df1['Z'].map(dic)
print (df1)
   Z  Y
0  a  6
1  b  7
2  c  8
3  a  6
4  a  6