tempdata.to_excel(writer,index=False, sheet_name='Sheet1', header=False, startrow=len(writer.sheets['Sheet1'])+1)这一句报错“sheet1”
时间: 2023-11-22 21:56:32 浏览: 158
这个错误可能是因为您的代码中没有创建名为"Sheet1"的工作表。您可以在调用该语句之前添加以下语句来创建该工作表:
```python
writer.sheets['Sheet1'] = writer.book.add_worksheet('Sheet1')
```
这个语句会创建一个名为"Sheet1"的工作表。然后,您可以再次运行您的代码并检查是否仍然出现相同的错误。
相关问题
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只有一条记录,怎么修改
这段代码的问题在于,在每次遍历匹配到一个账号时,都会打开一个新的 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()` 即可。
if(Medianindex==3) { Medianindex=0; for(int1_i=0;int1_i<2;int1_i++) { for(int1_j=0;int1_j<3-int1_i;int1_j++) { if(Mediandata[int1_j].One_4byte>Mediandata[int1_j+1].One_4byte) { Tempdata.One_4byte=Mediandata[int1_j].One_4byte; Mediandata[int1_j].One_4byte=Mediandata[int1_j+1].One_4byte; Mediandata[int1_j+1].One_4byte=Tempdata.One_4byte; } } } Sumdata.One_4byte=Sumdata.One_4byte+Mediandata[1].One_4byte; Sumindex=Sumindex+1; }
这段代码是一个条件语句,用于判断`Medianindex`是否等于3。如果等于3,则执行一系列操作。
在条件语句内部,进行了一系列的操作:
1. 将`Medianindex`重置为0。
2. 使用嵌套循环,对`Mediandata`结构体数组进行冒泡排序,将其中的四个元素按照升序排列。
3. 将排好序的`Mediandata`结构体数组中第二个元素的`One_4byte`值加到`Sumdata`结构体的`One_4byte`上。
4. 将`Sumindex`增加1。
通过这些操作,实现了对`Mediandata`结构体数组中的数据进行排序,并将排序后的第二个元素的值累加到`Sumdata`结构体中。
请注意,在这段代码中,涉及到了一些全局变量和结构体(如`Medianindex`、`Mediandata`、`int1_i`、`int1_j`、`Tempdata`、`Sumdata`、`Sumindex`),这些变量在其他地方定义并进行了操作。
希望对您有所帮助!如果还有其他问题,请随时提问。
阅读全文