一个Excel表中同一个房屋坐落对应两个不同的房屋账号,用pandas对该表的两个账号分别匹配流水表,并合并为一个表
时间: 2024-03-05 21:48:34 浏览: 20
好的,你的问题是如何用 pandas 对该表的两个账号分别匹配流水表,并合并为一个表。
首先,我们可以将 Excel 表中的数据读入 pandas 的 DataFrame 中。然后,我们可以使用 DataFrame 的 merge() 函数将两个账号的流水表合并为一个表,并且使用 groupby() 函数按照房屋坐落和账号进行分组,再使用 sum() 函数对每个组进行求和,得到每个账号在每个房屋坐落的总流水。
接下来,我们可以将两个账号的总流水分别与原始表格进行合并,以得到每个房屋坐落对应的两个账号的总流水。最后,我们可以将两个账号的总流水进行对比,以判断它们是否一致。如果不一致,我们可以输出不一致的信息,以便于进一步调查。
以下是示例代码:
``` python
import pandas as pd
# 读入 Excel 表中的数据到 DataFrame
df_raw = pd.read_excel('raw.xlsx')
df_account1 = pd.read_excel('account1.xlsx')
df_account2 = pd.read_excel('account2.xlsx')
df_flow = pd.read_excel('flow.xlsx')
# 将两个账号的流水表合并为一个表
df_merged = pd.merge(df_account1, df_account2, on='房屋坐落', suffixes=['_1', '_2'])
# 按照房屋坐落和账号进行分组,对每个组进行求和
df_total_flow = df_flow.groupby(['房屋坐落', '账号']).sum()
# 将两个账号的总流水分别与原始表格进行合并
df_raw = pd.merge(df_raw, df_total_flow[df_total_flow.index.get_level_values('账号') == '账号1'], on='房屋坐落', how='left')
df_raw = pd.merge(df_raw, df_total_flow[df_total_flow.index.get_level_values('账号') == '账号2'], on='房屋坐落', how='left')
# 输出每个房屋坐落对应的两个账号的总流水
print(df_raw)
# 比较两个账号的总流水是否一致
if df_merged['总流水_1'].equals(df_merged['总流水_2']):
print('两个账号的总流水一致')
else:
print('两个账号的总流水不一致')
# 输出不一致的信息
for index, row in df_merged.iterrows():
if row['总流水_1'] != row['总流水_2']:
print('房屋坐落:{},账号1总流水:{},账号2总流水:{}'.format(index, row['总流水_1'], row['总流水_2']))
```
注意,这里的代码仅仅是一个示例,实际应用中需要根据具体情况进行修改。同时,为了保护您的隐私,示例代码中的文件名和文件路径均为假设值,实际应用中需要根据实际情况进行修改。