用其他数据框的值填充数据框的空单元格
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
我想填充数据框的空单元格。 单元格应填充可在其他数据框中找到的值或字符串 其中“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