【Pandas】pandas DataFrame copy

Pandas2.2 DataFrame

Conversion

方法描述
DataFrame.astype(dtype[, copy, errors])用于將 DataFrame 中的數據轉換為指定的數據類型
DataFrame.convert_dtypes([infer_objects, …])用于將 DataFrame 中的數據類型轉換為更合適的類型
DataFrame.infer_objects([copy])用于嘗試將 DataFrame 中的 object 類型的列轉換為更具體的類型(如 int64float64boolean
DataFrame.copy([deep])用于創建 DataFrame 的副本

pandas.DataFrame.copy

pandas.DataFrame.copy 是一個方法,用于創建 DataFrame 的副本。這個方法可以用于創建淺拷貝或深拷貝,具體取決于 deep 參數的設置。

方法簽名
DataFrame.copy(deep=True)
參數說明
  • deep: 布爾值,默認為 True,表示是否進行深拷貝。如果設置為 True,則返回一個深拷貝;如果設置為 False,則返回一個淺拷貝。
返回值
  • 返回一個新的 DataFrame,該 DataFrame 是原 DataFrame 的副本。
示例

假設有一個 DataFrame 如下:

import pandas as pddata = {'A': [1, 2, 3],'B': [1.1, 2.2, 3.3],'C': ['x', 'y', 'z']
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)

輸出:

原始 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z數據類型:
A      int64
B    float64
C     object
dtype: object
示例1:創建深拷貝
df_deep_copy = df.copy(deep=True)
print("深拷貝后的 DataFrame:")
print(df_deep_copy)
print("\n數據類型:")
print(df_deep_copy.dtypes)

結果:

深拷貝后的 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z數據類型:
A      int64
B    float64
C     object
dtype: object
示例2:創建淺拷貝
df_shallow_copy = df.copy(deep=False)
print("淺拷貝后的 DataFrame:")
print(df_shallow_copy)
print("\n數據類型:")
print(df_shallow_copy.dtypes)

結果:

淺拷貝后的 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z數據類型:
A      int64
B    float64
C     object
dtype: object
示例3:修改深拷貝對原 DataFrame 的影響
df_deep_copy['A'][0] = 100
print("修改深拷貝后的 DataFrame:")
print(df_deep_copy)
print("\n原始 DataFrame:")
print(df)

結果:

修改深拷貝后的 DataFrame:A    B  C
0  100  1.1  x
1    2  2.2  y
2    3  3.3  z原始 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z
示例4:修改淺拷貝對原 DataFrame 的影響
df_shallow_copy['A'][0] = 200
print("修改淺拷貝后的 DataFrame:")
print(df_shallow_copy)
print("\n原始 DataFrame:")
print(df)

結果:

修改淺拷貝后的 DataFrame:A    B  C
0  200  1.1  x
1    2  2.2  y
2    3  3.3  z原始 DataFrame:A    B  C
0  200  1.1  x
1    2  2.2  y
2    3  3.3  z

通過這些示例,可以看到 pandas.DataFrame.copy 方法如何創建 DataFrame 的副本,并且深拷貝和淺拷貝在修改時對原 DataFrame 的影響不同。

注意事項
  • copy 方法可以創建 DataFrame 的副本。
  • 設置 deep=True 返回一個深拷貝,這意味著副本和原 DataFrame 完全獨立,修改副本不會影響原 DataFrame。
  • 設置 deep=False 返回一個淺拷貝,這意味著副本和原 DataFrame 共享數據,修改副本可能會影響原 DataFrame。
  • 深拷貝適用于需要完全獨立副本的場景,而淺拷貝適用于不需要完全獨立副本且希望節省內存的場景。
示例代碼及驗證

為了驗證 pandas.DataFrame.copy 方法的效果,可以運行上述示例代碼并查看輸出結果。

import pandas as pd# 創建一個示例 DataFrame
data = {'A': [1, 2, 3],'B': [1.1, 2.2, 3.3],'C': ['x', 'y', 'z']
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n數據類型:")
print(df.dtypes)# 創建深拷貝
df_deep_copy = df.copy(deep=True)
print("\n深拷貝后的 DataFrame:")
print(df_deep_copy)
print("\n數據類型:")
print(df_deep_copy.dtypes)# 創建淺拷貝
df_shallow_copy = df.copy(deep=False)
print("\n淺拷貝后的 DataFrame:")
print(df_shallow_copy)
print("\n數據類型:")
print(df_shallow_copy.dtypes)# 修改深拷貝對原 DataFrame 的影響
df_deep_copy['A'][0] = 100
print("\n修改深拷貝后的 DataFrame:")
print(df_deep_copy)
print("\n原始 DataFrame:")
print(df)# 修改淺拷貝對原 DataFrame 的影響
df_shallow_copy['A'][0] = 200
print("\n修改淺拷貝后的 DataFrame:")
print(df_shallow_copy)
print("\n原始 DataFrame:")
print(df)
運行結果

運行上述代碼后,你會看到以下輸出:

原始 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z數據類型:
A      int64
B    float64
C     object
dtype: object深拷貝后的 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z數據類型:
A      int64
B    float64
C     object
dtype: object淺拷貝后的 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z數據類型:
A      int64
B    float64
C     object
dtype: object修改深拷貝后的 DataFrame:A    B  C
0  100  1.1  x
1    2  2.2  y
2    3  3.3  z原始 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z修改淺拷貝后的 DataFrame:A    B  C
0  200  1.1  x
1    2  2.2  y
2    3  3.3  z原始 DataFrame:A    B  C
0  200  1.1  x
1    2  2.2  y
2    3  3.3  z

通過這些示例,可以看到 pandas.DataFrame.copy 方法如何創建 DataFrame 的副本,并且深拷貝和淺拷貝在修改時對原 DataFrame 的影響不同。

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

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

相關文章

緩存相關問題

Redis 持久化機制 緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級等問題 熱點數據和冷數據是什么 Memcache與Redis的區別都有哪些? 單線程的redis為什么這么快 redis的數據類型,以及每種數據類型的使用場景,Redis 內部結構 redis的過期策略以及內存淘汰機制 Redis 為什么…

2025年AI開發學習路線

目錄 一、基礎階段(2-3個月) 1. 數學與編程基礎 2. 機器學習入門 二、核心技能(3-4個月) 1. 深度學習與框架 2. 大模型開發(重點) 三、進階方向(3-6個月) 1. 多模態與智能體…

SvelteKit 最新中文文檔教程(19)—— 最佳實踐之身份認證

前言 Svelte,一個語法簡潔、入門容易,面向未來的前端框架。 從 Svelte 誕生之初,就備受開發者的喜愛,根據統計,從 2019 年到 2024 年,連續 6 年一直是開發者最感興趣的前端框架 No.1: Svelte …

【Kafka基礎】消費者命令行完全指南:從基礎到高級消費

Kafka消費者是消息系統的關鍵組成部分,掌握/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh工具的使用對于調試、測試和監控都至關重要。本文將全面介紹該工具的各種用法,幫助您高效地從Kafka消費消息。 1 基礎消費模式 1.1 從最…

CausalML 基于機器學習算法的因果推理方法

CausalML 是一個 Python 包,它使用基于最新研究的機器學習算法提供一套提升建模和因果推理方法。它提供了一個標準界面,允許用戶從實驗或觀察數據中估計條件平均處理效應 (CATE),也稱為個體治療效應 (ITE&a…

解鎖深度學習激活函數

在深度學習的廣袤天地里,激活函數宛如隱匿于神經網絡架構中的神奇密碼,掌控著模型學習與表達的關鍵力量。今天,就讓我們一同深入探究這些激活函數的奇妙世界,揭開它們神秘的面紗。 一、激活函數為何不可或缺? 想象一…

從零到有的游戲開發(visual studio 2022 + easyx.h)

引言 本文章適用于C語言初學者掌握基本的游戲開發, 我將用詳細的步驟引領大家如何開發屬于自己的游戲。 作者溫馨提示:不要認為開發游戲很難,一些基本的游戲邏輯其實很簡單, 關于游戲的開發環境也不用擔心,我會詳細…

大數據專業學習路線

大數據專業學習路線 目錄 基礎知識核心技術進階技能實戰項目職業發展學習資源學習計劃常見問題 1. 基礎知識 1.1 編程語言 Python:大數據分析的基礎語言 基礎語法和數據類型函數和模塊面向對象編程文件操作和異常處理常用庫:NumPy, Pandas, Matplot…

flink部署使用(flink-connector-jdbc)連接達夢數據庫并寫入讀取數據

flink介紹 1)Apache Flink 是一個框架和分布式處理引擎,用于對無界和有界數據流進行有狀態計算。Flink 被設計在所有常見的集群環境中運行,以內存執行速度和任意規模來執行計算。 2)在實時計算或離線任務中,往往需要…

用swift playground寫個ios應用和大模型或者網站交互

import SwiftUIstruct ContentView: View {State private var textFieldText: String ""State private var outputText: String "輸出將會顯示在這里"private let tip:String "消息已發送,請等待"State private var history:[Stri…

springboot+vue2集成JWT token實現權限驗證

前端項目搭建參考: Vue項目的搭建和啟動_vue項目啟動 csdn-CSDN博客 Vue ElementUI 登錄頁面_vue用戶登錄頁面-CSDN博客 跨域問題前端解決-CSDN博客 實現思路: 1. 實現的目的:為了保護網站安全信息,使用jwt進行權限驗證&#xf…

Cursor編程-從入門到精通__0409

早期的Github Copilot 最近更新了,支持Agent編程,字節跳動Trae使用(免費),但成熟程度不如Cursor,Cursor前50次免費 Copilot VS Cursor*** 1,Cursor VSCode 二次開發,IDE級別 2&…

MyBatis 詳解及代碼示例

MyBatis 是一個 半自動 ORM 框架,主要用于 Java 與數據庫之間的持久化操作,它本質是對 JDBC 的封裝 全名:MyBatis(前身 iBATIS)核心作用:自動將 SQL 執行結果映射為 Java 對象;也可以將 Java 對…

1.6-抓包技術(Burp Suite\Yakit抓包\Web、APP、小程序)

1.6-抓包技術(Burp Suite\Yakit抓包\Web、APP、小程序) 如果要使用抓包軟件,基本上第一步都是要安裝證書的。原因如下: 客戶端(瀏覽器或應用)會檢測到證書不受信任,并彈出 證書錯誤&#xff0…

Java 大視界 -- 基于 Java 的大數據隱私保護在金融客戶信息管理中的實踐與挑戰(178)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

第十屆 藍橋杯 嵌入式 省賽

一、分析 這屆的真題,有點像第七屆的液位檢測。 這屆的題目開始,貌似比賽描述的功能,邏輯上變得更好梳理了。一開始就把大致的功能給你說明一遍,不像之前都是一塊一塊的說明。 1. 基本功能 1)測量競賽板上電位器 R…

實現usb的MTP功能

前言:最終結果根據用戶自主選擇可實現host和device功能的切換。 效果展示: 當插入usb時設備會彈窗 當用戶選擇設備模式時pc端就會出現mtp設備盤符 實現mtp設備 ubuntu架構根文件系統通過uMTP-Responder實現usb的MTP功能 添加服務 /home/flynn/firfly_rootfs/lib/system…

React-05React中props屬性(傳遞數據),propTypes校驗,類式與函數式組件props的使用

1.類式組件props基本數據讀取與解構運算符傳遞 <script type"text/babel">// 創建組件class PersonalInfo extends React.Component {render() {// 讀取props屬性 并讀取值console.log(props,this.props);return(<ul><li>姓名&#xff1a;{this.p…

PCI認證 密鑰注入 ECC算法工具 NID_secp521r1 國密算法 openssl 全套證書生成,從證書提取公私鑰數組 x,y等

步驟 1.全套證書已經生成。OK 2.找國芯要ECC加密解密簽名驗簽代碼。給的邏輯說明沒有示例代碼很難的上。 3.集成到工具 與SP聯調。 1.用openssl全套證書生成及驗證 注意&#xff1a;這里CA 簽發 KLD 證書用的是SHA256。因為芯片只支持SHA256算法,不支持SHA512。改成統一。…

藍橋杯每日刷題c++

目錄 P9240 [藍橋杯 2023 省 B] 冶煉金屬 - 洛谷 (luogu.com.cn) P8748 [藍橋杯 2021 省 B] 時間顯示 - 洛谷 (luogu.com.cn) P10900 [藍橋杯 2024 省 C] 數字詩意 - 洛谷 (luogu.com.cn) P10424 [藍橋杯 2024 省 B] 好數 - 洛谷 (luogu.com.cn) P8754 [藍橋杯 2021 省 AB2…