list1 = list(data['交易对手账卡号'].drop_duplicates()) list2 = list(data1['交易对手账卡号'].drop_duplicates()) list3 = list(data2['被查账/卡号'].drop_duplicates()) a = [x for x in list3 if x in list1] for i in a: writer = pd.ExcelWriter('D:\桌面存储目录勿动\上分卡匹配.xlsx') tempdata = data[data['交易对手账卡号']==i] tempdata.to_excel(writer,index = False) writer.close()这段代码遍历写入xlsx只有一条记录,怎么修改
时间: 2023-11-22 19:56:25 浏览: 70
创新创业知识赛模拟试卷.doc
这段代码的问题在于,在每次遍历匹配到一个账号时,都会打开一个新的 Excel 文件,这样就会覆盖之前写入的数据,导致只有最后一条记录被写入。
为了解决这个问题,你可以先创建一个空的 Excel 文件,然后在遍历匹配到的账号时,将相应的数据追加到已有的 Excel 表格中。代码如下所示:
```python
import pandas as pd
# 创建空的 Excel 文件
writer = pd.ExcelWriter('D:\桌面存储目录勿动\上分卡匹配.xlsx')
list1 = list(data['交易对手账卡号'].drop_duplicates())
list2 = list(data1['交易对手账卡号'].drop_duplicates())
list3 = list(data2['被查账/卡号'].drop_duplicates())
a = [x for x in list3 if x in list1]
for i in a:
tempdata = data[data['交易对手账卡号']==i]
tempdata.to_excel(writer,index=False, sheet_name='Sheet1', header=False, startrow=len(writer.sheets['Sheet1'])+1)
# 关闭 Excel 文件
writer.save()
```
在上面的代码中,我们首先创建了一个空的 Excel 文件 `writer`,然后在每次遍历匹配到的账号时,将相应的数据追加到已有的 Excel 表格中,具体实现是通过 `to_excel` 方法实现的。`sheet_name` 参数指定了写入的工作表名称,`header` 参数指定是否要写入列名,`startrow` 参数指定起始行号。在写入数据后,我们不需要关闭 Excel 文件,只需要执行 `writer.save()` 即可。
阅读全文