判断Dataframe A 中的列a, b, c中的行是否在dataframe B中,如果不在,存放到dataframe C中
时间: 2024-09-27 09:03:08 浏览: 38
将一个DataFrame中的一列(行),插入到另一个DataFrame中
要在DataFrame A中检查列a, b, c的组合是否存在于DataFrame B,并将未在B中存在的行添加到DataFrame C中,你可以按照以下步骤操作:
1. **创建一个布尔索引**:
首先,计算A的三列(假设它们是数值型或可比较的)在B中的存在情况,可以使用`isin()`函数。
```python
match_index = ~A[['a', 'b', 'c']].isin(B[['a', 'b', 'c']])
```
2. **过滤出不在B中的行**:
将匹配索引应用到A上,得到所有在B中找不到的行。
```python
unmatched_rows = A[match_index]
```
3. **初始化一个新的DataFrame C**:
如果C还没有创建,就新建一个空的DataFrame,与A有相同的结构。
```python
if 'C' not in locals():
C = A.iloc[:, :].copy()
```
4. **合并新的数据到C**:
把未匹配的行添加到已经存在的DataFrame C。
```python
C = C.append(unmatched_rows, ignore_index=True)
```
5. **确保C的唯一标识符不会冲突**:
如果A和B的主键(如果有)不同,可能需要对C的行进行去重,比如基于'A'的主键。
```python
if 'id_column' in A.columns and 'id_column' in B.columns:
C = C.drop_duplicates(subset=['id_column'])
```
6. **最后更新或确认C的内容**:
```python
print(C)
```
阅读全文