pandas.to_excel怎么追加输入到excel
时间: 2024-01-27 20:03:47 浏览: 27
文件中?
可以使用pandas的ExcelWriter来实现追加输入到Excel文件中。首先需要创建一个ExcelWriter对象,然后在写入数据时指定sheet_name和startrow参数,使得数据被追加到指定sheet的末尾行。具体实现方法如下:
```python
import pandas as pd
# 读取已存在的Excel文件
df_old = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 创建用于追加写入的ExcelWriter对象
with pd.ExcelWriter('data.xlsx', mode='a') as writer:
# 将新数据追加写入到指定sheet的末尾行
df_new.to_excel(writer, sheet_name='Sheet1', startrow=len(df_old), index=False)
```
其中,df_new是要追加写入的新数据,len(df_old)为指定sheet的末尾行位置,index=False表示不输出行索引。这样,就可以实现将新数据追加写入到Excel文件中了。
相关问题
import pandas as pd file_path = input(r"请输入文件路径:").strip() file_path = file_path.replace("\\","\\\\") # file_path = r"d:\user\01429213\desktop\数据原表\数据底表\散航发货结算按供应商导出871Y6月.xlsx" sheet_name = "货机数据" try: air_data = pd.read_excel(file_path,usecols=["结算账期","结算网点代码","发货日期","供应商名称","发货结算货物类型","结算重量","实际支出"]) # 设置样式 styled_df = air_data.style \ .set_properties(**{'text-align': 'center'}) \ .set_table_styles([{'selector': 'td', 'props': [('min-width', '50px')]}]) \ .set_table_attributes('border="1" cellspacing="0" cellpadding="4"') with pd.ExcelWriter("场地效益看板 (test).xlsx", engine='openpyxl', mode='a', if_sheet_exists='replace') as writer: try: # 如果子表存在,则覆盖原子表 writer.book[sheet_name] writer.sheet = {ws.title: ws for ws in writer.book.worksheets} except KeyError: pass styled_df.to_excel(writer, sheet_name=sheet_name, startcol=0,index=False) print("完成清洗") except Exception as e: print("发生了异常:", e)详细的带吗
您的代码中,首先需要将文件路径中的反斜杠转义为双反斜杠,这一部分已经实现了。不过,您在 ExcelWriter 时,使用了 "mode='a'",表示以追加的方式打开 Excel 文件,这可能会导致出现问题。如果文件不存在,则会创建一个新文件,如果文件已经存在,则会将数据追加到文件的末尾。但是,由于模式为追加,所以新写入的数据可能会覆盖原有的数据,导致结果不正确。
为了避免这个问题,可以将 "mode='a'" 修改为 "mode='w'",表示以覆盖的方式打开 Excel 文件。这样,如果文件不存在,则会创建一个新文件,如果文件已经存在,则会覆盖原有的数据。
修改后的代码如下所示:
```python
import pandas as pd
file_path = input(r"请输入文件路径:").strip()
file_path = file_path.replace("\\", "\\\\")
sheet_name = "货机数据"
try:
air_data = pd.read_excel(file_path, usecols=["结算账期", "结算网点代码", "发货日期", "供应商名称", "发货结算货物类型", "结算重量", "实际支出"])
# 设置样式
styled_df = air_data.style \
.set_properties(**{'text-align': 'center'}) \
.set_table_styles([{'selector': 'td', 'props': [('min-width', '50px')]}]) \
.set_table_attributes('border="1" cellspacing="0" cellpadding="4"')
with pd.ExcelWriter("场地效益看板 (test).xlsx", engine='openpyxl', mode='w', if_sheet_exists='replace') as writer:
try:
# 如果子表存在,则覆盖原子表
writer.book[sheet_name]
writer.sheet = {ws.title: ws for ws in writer.book.worksheets}
except KeyError:
pass
styled_df.to_excel(writer, sheet_name=sheet_name, startcol=0, index=False)
print("完成清洗")
except Exception as e:
print("发生了异常:", e)
```
希望这个解决方案能够帮助到您!如果您还有其他问题,欢迎随时提出。
def add_reader(): id = input("请输入读者编号:") name = input("请输入读者姓名:") gender = input("请输入读者性别(男/女):") age = input("请输入读者出生日期(YYYY-MM-DD):") iphone = input("请输入读者手机号:") type = input("请输入读者类别(教师/学生):") df = pd.read_excel('readers.xlsx') if df[(df['id'] == id)].empty: print("\n\n已录入该编号的读者信息!") time.sleep(3) else: reader = {"id": id, "name": name, "gender": gender, "age": age, "iphone": iphone, "type": type, "isvalid": 1} readers.append(reader) try: df = pd.read_excel("readers.xlsx") except: df = pd.DataFrame(columns=["id", "name", "gender", "age", "iphone", "type", "isvalid"]) df = df._append(reader, ignore_index=True) df.to_excel("readers.xlsx", index=False) print("读者信息已添加成功!") 修改代码为添加的信息使用列表进行存储
将添加的信息使用列表进行存储的代码如下:
```
import pandas as pd
def add_reader():
id = input("请输入读者编号:")
name = input("请输入读者姓名:")
gender = input("请输入读者性别(男/女):")
age = input("请输入读者出生日期(YYYY-MM-DD):")
iphone = input("请输入读者手机号:")
type = input("请输入读者类别(教师/学生):")
# 从文件中读取已有的读者信息
try:
df = pd.read_excel("readers.xlsx")
except:
df = pd.DataFrame(columns=["id", "name", "gender", "age", "iphone", "type", "isvalid"])
# 检查是否已经有了输入的读者编号
if not df[(df['id'] == id)].empty:
print("\n\n已录入该编号的读者信息!")
time.sleep(3)
return
# 创建一个字典来保存读者信息,并将其添加到列表中
reader = {"id": id, "name": name, "gender": gender, "age": age, "iphone": iphone, "type": type, "isvalid": 1}
df = df.append(reader, ignore_index=True)
# 将列表中的读者信息存储到文件中
df.to_excel("readers.xlsx", index=False)
print("读者信息已添加成功!")
```
这个版本的代码使用了一个名为"df"的pandas.DataFrame对象来存储读者信息。在添加新的读者信息时,会将其转化为一个名为"reader"的字典,并将其追加到"df"中。在程序结束时,会将"df"中的内容保存到文件中。这个版本的代码比之前的版本更稳健,因为它能够长期保存读者信息,并且能够较好地处理读者信息的增加和删除等操作。