Python pandas 向excel追加數據,不覆蓋之前的數據

最近突然看了一下pandas向excel追加數據的方法,發現有很多人出了一些餿主意;

比如用concat,append等方法,這種方法的會先將舊數據df_1讀取到內存,再把新數據df_2與舊的合并,形成df_new,再覆蓋寫入,消耗和速度極大,肯定不聰明;

如果是CSV文件,pandas的to_csv可以直接mode=a追加,畢竟就是一個純文本型文件;

但excel不行,畢竟excel存儲的原理不同,同樣的數據excel要小很多,粗糙地可認為,把很多相似內容,用鍵值對存儲,那么單元格內很多重復的東西,只需要用key值代替,體積就小,但計算開銷大;

1.自己試驗了一下,先說結論:

需求:向EXCEL某個表中,追加數據,不覆蓋原數據,正確高效方法:

df_1為舊數據,存到excel之后,再用pandas read_excel后稱為data_1;

新數據為df_2

import pandas as pdpath =?'d:/test_pd.xlsx'
# 正確方法
with pd.ExcelWriter(path ,mode='a',if_sheet_exists='overlay') as w:df_2.to_excel(w,'Sheet1',index=False,header=False,startrow=df_1.shape[0]+1)

注意:

①ExcelWriter的mode和if_sheet_exists這兩模式要選對;

②startrow,必須指定起始行(默認為0),并且要+1,不然df_2的數據會覆蓋df_1,跟直接df_2.to_excel()沒區別;

2證明:

import pandas as pd
import random
from faker import Faker # 生成假數據的庫
df_1 = pd.DataFrame(columns=['index','name','value'])
# 生成10個數據
fake_instance = Faker("zh_CN")index_1 = [i for i in range(1,11)]
fake_names_1 = [fake_instance.name() for i in range(1,11)]
fake_values_1 = [random.randint(1,100) for i in range(1,11)]
# 寫到dataframe中
temp_list = [index_1,fake_names_1,fake_values_1]
for col,v in zip(df_1.columns,temp_list):df_1[col] = v
# 第一波數據還是把標題帶上,后面就不帶標題了
df_1.to_excel('d:/test_pd.xlsx',index=False,header=True)
df_1

2.1數據如下:

2.2再來一波數據:

index_2 = [i for i in range(11,21)]
fake_names_2 = [fake_instance.name() for i in range(11,21)]
fake_values_2 = [random.randint(1,100) for i in range(11,21)]df_2=pd.DataFrame({'index':index_2,'name':fake_names_2,'value':fake_values_2})
df_2

?

2.3使用簡單而高效正確的方法追加數據:

# 正確方法
with pd.ExcelWriter(path ,mode='a',if_sheet_exists='overlay') as w:df_2.to_excel(w,'Sheet1',index=False,header=False,startrow=df_1.shape[0]+1)

2.4驗證本地數據:

2.5如果不指定startrow,則

觀點來自:

pandas.DataFrame.to_excel:在同一個sheet內追加數據_pandas to excel的mode設置為a,可以再同一個表追加數據么-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80444.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80444.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MYSQL 索引和事 務

目錄 一 MYSQL 索引介紹 1.索引概念 2.索引作用 3.索引的分類 3.1普通索引 3.2唯一索引 3.3組合索引(最左前綴) 3.4全文索引 4.3查看索引 4.4刪除索引 二 MYSQL事務 一:MYSQL索引介紹 索引是一個排序的列表,在這個列表中存儲著索…

【C/C++】ARM處理器對齊_偽共享問題

文章目錄 1 什么是偽共享?2 為什么對齊?3 偽共享的實際影響4 為什么必須是 64 字節?5 其他替代方案6 驗證對齊效果總結 1 什么是偽共享? 偽共享是 多線程編程中的一種性能問題,其本質是: 緩存行&#xff…

Kafka Controller的作用是什么?故障時如何恢復? (管理分區和副本狀態;通過ZooKeeper選舉新Controller)

Apache Kafka Controller 是 Kafka 集群的核心協調組件,主要承擔兩大核心職責: 一、核心作用 分區領導者選舉 1 // 分區領導者選舉邏輯示例(偽代碼) def electLeader(partition: Partition): Unit {val isr partition.inSync…

阿里云前端Nginx部署完,用ip地址訪問卻總訪問不到,為什么?檢查安全組是否設置u為Http(80)!

根據你的描述,Ping測試顯示數據包無丟失但無法通過公網IP訪問服務,說明網絡基礎層(ICMP協議)是通暢的,但更高層(如TCP/UDP協議或服務配置)存在問題。以下是系統性排查與解決方案: 一…

關于STM32 SPI收發數據異常

問題描述: STM32主板做SPI從機,另一塊linux主板做主機,通信的時候發現從機可以正確接收到主機數據,但是主機接收從機數據時一直不對,是隨機值。 問題原因: 剛發現問題的時候,用邏輯分析儀抓包…

特勵達力科LeCroy推出Xena Freya Z800 800GE高性能的800G以太網測試平臺

Xena Freya Z800 800GE 是由全球領先的測試與測量解決方案提供商特勵達力科公司(Teledyne LeCroy)開發的高性能以太網測試平臺,專為滿足從10GE到800GE數據中心互連速度的需求而設計。特勵達力科公司在網絡測試領域擁有超過50年的技術積累&…

基于Django框架的股票分紅數據爬蟲和展示系統

項目截圖 一、項目簡介 本項目是一個基于 Django 框架的股票分紅數據爬蟲和展示系統。它可以從東方財富網站爬取股票分紅數據,并將數據存儲到 Django 數據庫中,同時提供數據查詢、導出和圖表展示功能。該系統為用戶提供了一個方便的平臺,用于…

nginx性能優化與深度監控

一、性能調優方向 1. 系統層面優化 內核參數調整 TCP隊列與連接管理: net.core.somaxconn(最大連接隊列長度,建議設為65535)net.ipv4.tcp_max_syn_backlog(SYN隊列長度,建議65535)net.ipv4.tc…

深入解析 Vision Transformer (ViT) 與其在計算機視覺中的應用

在近年來,深度學習尤其在計算機視覺領域取得了巨大的進展,而 Vision Transformer(ViT)作為一種新的視覺模型,它的表現甚至在許多任務中超過了傳統的卷積神經網絡(CNN),如 ResNet。在…

PXE_Kickstart_無人值守自動化安裝系統

文章目錄 1. PXE2. 配置服務參數2.1 tftp服務配置2.2 dhcp服務配置2.3 http服務配置 3. 配置PXE環境3.1 網絡引導文件pxelinux.03.2 掛載鏡像文件3.3 創建配置文件default3.4 復制鏡像文件和驅動文件3.5 修改default文件3.6 配置ks.cfg文件 4. PXE客戶端4.1 創建虛擬機&#xf…

鴻蒙NEXT開發動畫案例4

1.創建空白項目 2.Page文件夾下面新建Spin.ets文件,代碼如下: /*** TODO SpinKit動畫組件 - 雙粒子旋轉縮放動畫* author: CSDN-鴻蒙布道師* since: 2025/05/08*/ ComponentV2 export struct SpinFour {// 參數定義Require Param spinSize: number 36…

基于STM32、HAL庫的CP2102-GMR USB轉UART收發器 驅動程序設計

一、簡介: CP2102-GMR是Silicon Labs公司生產的一款USB轉UART橋接芯片,主要特點包括: 集成USB 2.0全速功能控制器 內置USB收發器,無需外部電阻 工作電壓:3.0V至3.6V 支持的數據格式:數據位8,停止位1,無校驗 最高支持1Mbps的波特率 內置512字節接收緩沖區和512字節發送…

Ubuntu 22虛擬機【網絡故障】快速解決指南

Ubuntu22虛擬機突然無法連接網絡了,以下是故障排除步驟記錄。 Ubuntu 22虛擬機網絡故障快速解決指南 當在虛擬機中安裝的 Ubuntu 22 系統出現 ping: connect: 網絡不可達 和 ping: www.baidu.com: 域名解析出現暫時性錯誤的報錯時,通常意味著虛擬機無法…

實戰springcloud alibaba

實戰springcloud alibaba 前言 如何搭建一套最新的springcloud alibaba,以適配項目升級需求? 1.版本的選擇 2.各組件的適配 3.新技術的敏感性 4.前瞻性,幾年內不會被淘汰 參考資料:Spring Cloud Alibaba 參考文檔 https://spring…

泰迪杯特等獎案例學習資料:基于卷積神經網絡與集成學習的網絡問政平臺留言文本挖掘與分析

(第八屆“泰迪杯”數據挖掘挑戰賽A題特等獎案例深度解析) 一、案例背景與核心挑戰 1.1 應用場景與行業痛點 隨著“互聯網+政務”的推進,網絡問政平臺成為政府與民眾溝通的重要渠道。某市問政平臺日均接收留言超5000條,涉及民生、環保、交通等20余類訴求。然而,傳統人工…

DVWA靶場保姆級通關教程--06不安全驗證機制

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 目錄 文章目錄 前言 原理詳解 1. 前后端驗證邏輯不一致 2. 驗證碼值保存在客戶端 3. 驗證碼可預測或重復 4. 驗證碼驗證與邏輯解耦 一、處理關卡報錯 二、low級別源…

【LeetCode Hot100 | 每日刷題】排序數組

912. 排序數組 - 力扣(LeetCode) 題目: 給你一個整數數組 nums,請你將該數組升序排列。 你必須在 不使用任何內置函數 的情況下解決問題,時間復雜度為 O(nlog(n)),并且空間復雜度盡可能小。 示例 1&…

Windows系統下使用Kafka和Zookeeper,Python運行kafka(二)

1.配置 Zookeeper 進入解壓后的 Zookeeper 目錄(例如 F:\zookeeper\conf),復制 zoo_sample.cfg 文件并命名為 zoo.cfg(如果 zoo.cfg 已經存在,則直接編輯該文件)。 打開 zoo.cfg 文件,配置相關…

Web 自動化之 HTML JavaScript 詳解

文章目錄 一、HTML 常用標簽二、javascript 腳本1、什么是 javascript(js)2、 js變量和函數3、js 彈窗處理4、js 流程控制語句和 switch 結構語句應用 一、HTML 常用標簽 HTML:超文本標記語言 超文本:不僅只包含文字,還有超鏈接、視頻…這些…

el-date-picker的type為daterange時僅對開始日期做限制

文章目錄 前言繡球html代碼一、正確代碼二、錯誤代碼 前言繡球 需求是這樣的,開始日期需要限制只能選擇今天的日期,結束日期只能選擇今天之后的日期。結束日期很常見,但是單純限制開始日期,還是蠻少見的,尤其是datera…