用pandas在Excel表中同一个房屋坐落对应两个不同的房屋账号,用两个账号匹配流水词条
时间: 2024-03-05 14:47:46 浏览: 198
可以使用pandas的merge方法来实现在Excel表中同一个房屋坐落对应两个不同的房屋账号,用两个账号匹配流水词条。具体步骤如下:
1. 使用pandas分别读取房屋账号表格和流水表格,假设房屋账号表格的文件名为accounts.xlsx,包含三列:房屋地址、第一个账号、第二个账号;流水表格的文件名为transactions.xlsx,包含四列:房屋地址、账号、流水词条、流水金额。代码示例如下:
```python
import pandas as pd
# 读取房屋账号表格
accounts = pd.read_excel('accounts.xlsx')
# 读取流水表格
transactions = pd.read_excel('transactions.xlsx')
```
2. 使用pandas的merge方法,将房屋账号表格和流水表格进行合并。由于同一个房屋坐落对应两个不同的房屋账号,需要进行两次合并,分别以第一个账号和第二个账号作为键。代码示例如下:
```python
# 以第一个账号作为键合并
merged1 = pd.merge(transactions, accounts[['房屋地址', '第一个账号']], on='房屋地址', how='left')
merged1 = pd.merge(merged1, transactions[['房屋地址', '流水词条']], left_on=['房屋地址', '第一个账号'], right_on=['房屋地址', '账号'], how='left')
merged1 = merged1[['房屋地址', '第一个账号', '流水词条']]
merged1.columns = ['房屋地址', '账号', '流水词条']
# 以第二个账号作为键合并
merged2 = pd.merge(transactions, accounts[['房屋地址', '第二个账号']], on='房屋地址', how='left')
merged2 = pd.merge(merged2, transactions[['房屋地址', '流水词条']], left_on=['房屋地址', '第二个账号'], right_on=['房屋地址', '账号'], how='left')
merged2 = merged2[['房屋地址', '第二个账号', '流水词条']]
merged2.columns = ['房屋地址', '账号', '流水词条']
# 合并两次合并的结果
merged = pd.concat([merged1, merged2])
```
在上述代码中,我们首先以第一个账号作为键合并,将流水表格和房屋账号表格进行合并,并仅保留房屋地址、第一个账号和流水词条三列。然后以第二个账号作为键进行合并,同样仅保留房屋地址、第二个账号和流水词条三列。最后,将两次合并的结果进行合并,得到最终的合并结果。
3. 对合并结果进行筛选,按照房屋地址和账号进行筛选,即可得到对应的流水词条。代码示例如下:
```python
# 筛选结果
result = merged[(merged['房屋地址'] == 'xxx') & ((merged['账号'] == 'xxx') | (merged['账号'] == 'xxx'))]['流水词条']
```
在上述代码中,我们使用了布尔索引,按照房屋地址和账号进行筛选,得到对应的流水词条。需要将代码中的'xxx'替换为具体的房屋地址和账号。
阅读全文