【发布时间】:2021-12-13 20:27:45
【问题描述】:
使用以下“掩码”DataFrame:
>>> mask
city value_1 value_2
index
0 London 10 NaN
1 Paris NaN 21
2 Paris 30 NaN
3 Paris NaN NaN
4 Berlin 3 5
5 Berlin NaN 10
6 New York NaN NaN
以及下面的“填充”框架:
>>> filling
value_1 value_2
London 1100 2100
Paris 1150 2200
Berlin NaN 3000
New York 5000 NaN
如何根据city AND 列将filling 合并到mask 中,从而使生成的DataFrame 变为:
>>> result
city value_1 value_2
index
0 London 10 2100
1 Paris 1150 21
2 Paris 30 2200
3 Paris 1150 2200
4 Berlin 3 5
5 Berlin NaN 10
6 New York 5000 NaN
从概念上讲,mask 中的任何值(即NaN)都容易被filling 的值“填充”,该值匹配其city 及其列(value_1 或value_2)。
我正在努力解决的部分是让DataFrame.merge() 同时考虑索引(此处为city)和所有列。两者都可以,但要获得预期的结果,我似乎需要两者。
编辑:
我尝试了以下方法:
>>> expanded = mask[[]].join(filling, on='city')
>>> mask.merge(expanded)
但这只会让我返回mask,并且来自expanded 的所有值都被简单地忽略(即使目标单元格是NaN)。
【问题讨论】:
标签: python pandas dataframe join merge