pd.merge 不指定关联的列, 但空单元格不能当成相同的值,空值视为不匹配, 应该怎么做?
时间: 2024-09-23 09:10:03 浏览: 36
10高级 1:不喜欢 merge 的分叉?用 rebase 吧(1).md
当使用pandas库中的`pd.merge()`函数合并数据框时,如果不想手动指定关联列,并且希望将空值(NaN)视为不匹配,你可以设置`how='left'`或`how='right'`,这会保留左表或右表的所有行,对缺失值进行填充。但是,如果你想直接忽略空值,可以考虑使用`merge`函数的`indicator=True`选项,这样会在结果中添加一个新的布尔列`_merge`,标识哪些记录来自源数据框(True),哪些是新加入的(False),包括那些由于不匹配而填充的NaN。
例如:
```python
merged_df = pd.merge(left_df, right_df, on=None, how='left', indicator=True)
```
在这个例子中,如果你想要只保留左边数据框(left_df)并且忽略右边数据框中的缺失值,可以在后续筛选掉 `_merge` 列中标记为 'right_only' 的行:
```python
filtered_df = merged_df[merged_df['_merge'] != 'right_only']
```
阅读全文