我想填充数据框的空白单元格。单元格应填充值或字符串,以在“ 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句