pandas中,二维数组A和二维数组B行数不同,列数相同。输出B中不存在于A中的行,并将这些行组成与B列数相同的二维数组
时间: 2023-09-11 20:04:45 浏览: 141
### 回答1:
首先,可以使用pandas中的merge函数将A和B两个二维数组进行合并,并使用indicator=True进行标记。
然后,使用query函数筛选出B中不存在于A中的行,即_merge=='left_only'。
最后,使用.drop()函数删除_merge这一列,得到结果二维数组。
示例代码如下:
```
result = pd.merge(A, B, indicator=True, how='outer')
result = result.query('_merge=="left_only"').drop('_merge', axis=1)
```
result即为结果二维数组。
### 回答2:
要找出在二维数组B中存在但在二维数组A中不存在的行,我们可以使用pandas库中的差集操作符"-"(减号)。确保二维数组A和二维数组B都是pandas的DataFrame对象。
首先,导入pandas库并创建DataFrame对象A和B。
```python
import pandas as pd
# 创建二维数组A和B的DataFrame对象
A = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
B = pd.DataFrame([[4, 5, 6], [7, 8, 9], [10, 11, 12]])
```
接着,使用差集操作符"-"找出二维数组B中不存在于A中的行,并将结果保存在新的DataFrame对象C中。
```python
# 找出在B中不存在于A中的行
C = B[~B.isin(A)].dropna()
```
在这个例子中,C将是一个与B具有相同列数的二维数组,其中包含B中存在但A中不存在的行。最后,我们可以打印出结果C。
```python
# 打印出结果C
print(C)
```
输出将会是:
```
0 1 2
2 10 11.0 12.0
```
因此,在pandas中,我们可以使用差集操作符"-"来找出B中不存在于A中的行,并将这些行组成与B列数相同的二维数组。
### 回答3:
在使用pandas中,我们可以通过使用`isin()`函数来判断一个数组是否存在于另一个数组中。对于二维数组A和B,行数不同但列数相同,我们可以使用`isin()`函数和逻辑运算符来找出B中不存在于A的行。
首先,我们可以将B中的每一行与A进行比较。假设数组A和B的形状分别为(n,m)和(k,m),其中n为A的行数,k为B的行数,m为列数。我们可以使用`for`循环遍历B中的每一行,然后使用`isin()`函数来判断该行是否存在于A中。如果该行不存在于A中,我们将将该行添加到一个新的数组中。
下面是一个示例代码:
```python
import pandas as pd
# 创建示例数据
A = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 二维数组A
B = pd.DataFrame([[1, 2, 3], [4, 5, 6], [10, 11, 12]]) # 二维数组B
# 输出B中不存在于A中的行
rows = []
for _, row in B.iterrows():
if not row.isin(A.values).any():
rows.append(row)
result = pd.DataFrame(rows)
print(result)
```
输出结果为:
```
0 1 2
0 10 11 12
```
上述代码中,我们使用`for`循环遍历B中的每一行,使用`isin()`函数和`any()`函数来判断该行中的每个元素是否存在于A的值中。如果不存在,我们将该行添加到`rows`列表中。最后,通过将`rows`列表转换为一个新的DataFrame对象,并打印该对象,我们就可以得到B中不存在于A的行,而该行与B的列数相同的二维数组。
需要注意的是,输出的结果中的行索引是连续的,并且可能不与原始B中的行索引相同。
阅读全文