Алексей Чистов Asked:2020-12-05 01:44:25 +0800 CST2020-12-05 01:44:25 +0800 CST 2020-12-05 01:44:25 +0800 CST 合并帧时如何忽略NaN? 772 有 2 个 dfs - 合并发生在 2 列上:1 列始终匹配且不能为空(但可以重复),另外 1 列可以有值,或者可以等于 nan。此外,它既可以在 1 df 中,也可以在另一个中。 我需要按照以下规则将它们相互组合:如果 2 列的当前值为 nan,那么它必须与任何值组合,而不仅仅是 nan,默认情况下。这条规则是双向的。例如 1 df - DB: 2df - VEN: 我想得到结果df: 我可以通过 1 个字段将它们组合起来: pd.merge(left=DB, right=VEN, how='left',on=['ID']) 但考虑到上述逻辑,我不知道如何通过 2 个字段组合。 python 1 个回答 Voted Best Answer MaxU - stop genocide of UA 2020-12-05T03:01:53+08:002020-12-05T03:01:53+08:00 例子: In [26]: d1 Out[26]: ID SOURCE 0 1 AAA 1 2 NaN 2 3 BBB In [27]: d2 Out[27]: ID SOURCE VENUE 0 1 NaN X1 1 2 CCC X2 2 3 BBB X3 3 4 NaN X4 4 5 DDD X5 In [28]: res = d1.merge(d2, on='ID', how='outer', suffixes=['', '2']) In [29]: res['SOURCE'] = res['SOURCE'].combine_first(res.pop('SOURCE2')) In [30]: res Out[30]: ID SOURCE VENUE 0 1 AAA X1 1 2 CCC X2 2 3 BBB X3 3 4 NaN X4 4 5 DDD X5
例子: