pandas 用a表的一列数据筛选b表
时间: 2024-05-10 09:16:52 浏览: 144
可以使用 pandas 的 merge 函数将两个表按照某个列进行合并,然后再用筛选函数过滤数据。
例如,假设有两个表 a 和 b,其中 a 表的列名为 column_a,b 表的列名为 column_b,要筛选出 b 表中 column_b 列的值在 a 表 column_a 列中出现过的数据,可以按照以下步骤进行:
1. 使用 merge 函数将 a 表和 b 表按照 column_a 列进行合并,并指定合并方式为 inner,表示只保留两个表中都存在的数据:
```
merged_data = pd.merge(a, b, left_on='column_a', right_on='column_b', how='inner')
```
2. 对合并后的数据进行筛选,只保留 b 表中 column_b 列的值在 a 表 column_a 列中出现过的数据:
```
filtered_data = merged_data[merged_data['column_b'].isin(a['column_a'])]
```
这样,filtered_data 就是筛选后的结果。
相关问题
pandas 使用a表的一列数据筛选b表的数据,显示b表的c列
可以使用 pandas 的 merge 函数将两个表连接起来,然后再根据 a 表的一列数据筛选 b 表的数据,并显示 b 表的 c 列。示例代码如下:
```python
import pandas as pd
# 创建 a 表和 b 表
a = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
b = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'c': ['a', 'b', 'c', 'd']})
# 使用 merge 函数将 a 表和 b 表连接起来
merged = pd.merge(a, b, on='key')
# 根据 a 表的一列数据筛选 b 表的数据,并显示 b 表的 c 列
selected = merged.loc[merged['value'] > 2, 'c']
print(selected)
```
运行结果如下:
```
2 c
3 d
Name: c, dtype: object
```
以上代码中,我们首先创建了 a 表和 b 表,然后使用 merge 函数将两个表连接起来。连接的列是 key 列,因为它们在两个表中都存在。
接着,我们根据 a 表的 value 列进行筛选,只保留值大于 2 的行,并显示 b 表的 c 列。最后,我们得到了根据 a 表的一列数据筛选 b 表的数据,并显示 b 表的 c 列的结果。
pandas 用a表的数据 筛选b表的一列
可以用 Pandas 中的 merge() 函数来实现。
假设 a 表的数据如下:
```
id name age
0 1 Tom 20
1 2 John 22
2 3 Alex 21
```
b 表的数据如下:
```
id gender
0 1 male
1 2 female
2 3 male
```
我们要筛选 b 表的 gender 列,其中 id 列与 a 表的 id 列对应。可以使用如下代码实现:
```
import pandas as pd
a = pd.DataFrame({
'id': [1, 2, 3],
'name': ['Tom', 'John', 'Alex'],
'age': [20, 22, 21]
})
b = pd.DataFrame({
'id': [1, 2, 3],
'gender': ['male', 'female', 'male']
})
result = pd.merge(a, b[['id', 'gender']], on='id', how='left')
print(result)
```
输出结果为:
```
id name age gender
0 1 Tom 20 male
1 2 John 22 female
2 3 Alex 21 male
```
其中 on 参数指定连接的键,how 参数指定连接方式,left 表示以 a 表为基准,保留 a 表的所有行。b[['id', 'gender']] 表示选取 b 表的 id 和 gender 两列。最后将结果保存在 result 变量中。
阅读全文