pandas中df.to _dict(orient=‘records‘)方法的作用和場景說明

df.to _dict(orient='records') 是 Pandas DataFrame 的一個方法,用于將數據轉換為字典列表格式。以下是詳細解釋及實例說明:

一、核心含義

  1. 作用
    將 DataFrame 的每一行轉換為一個字典,所有字典組成一個列表。
    每個字典的鍵(key)是 DataFrame 的列名,值(value)是該行對應列的數據。
    證據來源:

  2. 參數 orient='records'

    • orient 指定輸出字典的格式:
      • 'records' 生成列表(每個元素為行字典)
      • 其他選項如 'dict'(列名→列值字典)、'index'(行索引→行值字典)等(詳見 )
    • 注意:Pandas 1.1.x 后棄用短參數名(如 'records'),推薦完整寫法 orient='records'

二、實例說明

示例 1:基礎轉換
import pandas as pd# 創建示例 DataFrame
df = pd.DataFrame({'Name': ['Alice', 'Bob'],'Age': [30, 28],'City': ['Beijing', 'Shanghai']
})# 使用 orient='records'
records = df.to_dict(orient='records')
print(records)

輸出

[{'Name': 'Alice', 'Age': 30, 'City': 'Beijing'},{'Name': 'Bob', 'Age': 28, 'City': 'Shanghai'}
]

每行數據轉換為獨立字典,鍵為列名(Name, Age, City


示例 2:特殊場景處理
  1. 列名為數字字符串時
    若列名是整數格式的字符串(如 '0'),舊版本 Pandas(如 0.24.0)會自動添加下劃線({'_0': value}):

    df_bad = pd.DataFrame({str(i): [i] for i in range(3)})  # 列名為 ['0','1','2']
    print(df_bad.to_dict('records'))  # 輸出 [{'_0': 0, '_1': 1, '_2': 2}]
    
  2. 空 DataFrame 時
    無數據的 DataFrame 返回空列表 [],而非預期的 [{}, {}, ...](行為可能因版本而異):

    empty_df = pd.DataFrame([{}, {}]) 
    print(empty_df.to_dict(orient='records'))  # 輸出 []
    
  3. 性能對比
    大數據集下原生方法可能比自定義實現慢(如 500 萬行數據慢 3 倍),因需類型檢查和裝箱操作 。


三、典型應用場景

  1. 數據序列化
    轉換為字典列表后可直接用于 JSON 序列化,方便 API 傳輸或存儲 :

    import json
    json_data = json.dumps(df.to_dict(orient='records'))
    
  2. 機器學習特征處理
    配合 sklearn.feature_extraction.DictVectorizer 對分類特征做 One-Hot 編碼 :

    from sklearn.feature_extraction import DictVectorizer
    vec = DictVectorizer(sparse=False)
    X = vec.fit_transform(df.to_dict(orient='records'))
    
  3. 數據遍歷
    直接迭代每行數據,代碼更簡潔 :

    for record in df.to_dict(orient='records'):print(record['Name'], record['Age'])
    

四、注意事項

  1. 版本兼容性

    • Pandas ≥1.1.x 需用 orient='records' 而非簡寫 'records',否則觸發棄用警告 。
    • 列數 ≥255 時,舊版本(0.24.0)可能報錯 AttributeError,建議升級 Pandas 。
  2. 數據類型保留
    默認保留 Pandas 內部類型(如 Timestamp),若需原生 Python 類型(如 datetime),需提前轉換:

    df['date'] = df['date'].astype(object)  # 將時間戳轉為 Python datetime
    records = df.to_dict(orient='records')
    

    *否則輸出可能包含非標準類型(如 Timestamp)導致序列化失敗 *。

  3. 索引處理
    orient='records' 默認忽略行索引(index)。若需包含索引,應先重置索引:

    df.reset_index(inplace=True)  # 添加索引列
    records = df.to_dict(orient='records')
    

總結

df.to _dict(orient='records') 的核心功能是將 DataFrame 按行轉換為字典列表,每個字典代表一行數據,鍵為列名。它適用于數據序列化、機器學習特征工程和簡化數據遍歷,但需注意版本差異、列名格式和數據類型轉換問題。

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

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

相關文章

阿里云Anolis OS 8.6的公有云倉庫源配置步驟

文章目錄一、備份現有倉庫配置(防止誤操作)二、配置阿里云鏡像源2.1 修改 BaseOS 倉庫2.2 修改 AppStream 倉庫三、清理并重建緩存四、驗證配置4.1 ?檢查倉庫狀態?:五、常見問題解決5.1 ?HTTP 404 錯誤5.2 ?網絡連接問題附:其…

回歸預測 | Matlab實現CNN-BiLSTM-self-Attention多變量回歸預測

回歸預測 | Matlab實現CNN-BiLSTM-self-Attention多變量回歸預測 目錄回歸預測 | Matlab實現CNN-BiLSTM-self-Attention多變量回歸預測預測效果基本介紹程序設計參考資料預測效果 基本介紹 1.Matlab實現CNN-BiLSTM融合自注意力機制多變量回歸預測,CNN-BiLSTM-self-…

103、【OS】【Nuttx】【周邊】文檔構建渲染:Sphinx 配置文件

【聲明】本博客所有內容均為個人業余時間創作,所述技術案例均來自公開開源項目(如Github,Apache基金會),不涉及任何企業機密或未公開技術,如有侵權請聯系刪除 背景 接之前 blog 【OS】【Nuttx】【周邊】文…

轉換一個python項目到moonbit,碰到報錯輸出:編譯器對workflow.mbt文件中的類方法要求不一致的類型注解,導致無法正常編譯

先上結論:現在是moon test的時候有很多報錯,消不掉。問題在Trae中用GLM-4.5模型,轉換一個python項目到moonbit,碰到報錯輸出:報錯輸出經過多次嘗試修復,我發現這是一個MoonBit編譯器的bug。編譯器對workflo…

【C#補全計劃】事件

一、事件的概念1. 事件是基于委托的存在,是委托的安全包裹,讓委托的使用更具有安全性2. 事件是一種特殊的變量類型二、事件的使用1. 語法:event 委托類型 事件名;2. 使用:(1)事件是作為成員變量存在與類中&…

java內存緩存

我們在項目中會經常使Redis和Memcache,但是簡單項目就沒必要使用專門的緩存框架來增加系統的復雜性。用Java代碼邏輯就能實現內存級別的緩存。1.定時任務線程池使用ScheduledExecutorService結合ConcurrentHashMap,如果你使用的是ConcurrentHashMap,你可…

智能工廠生產監控大屏-vue純前端靜態頁面練習

學習前端還是非常有意思的,因為前端真的是可見即所得,可以做出來非常好看漂亮的頁面,最近我就在使用前端技術 做一些大屏報表,在制作這些大屏報表過程中,又熟練的練習了自己的學到的相關的前端技術,接下來把…

HTTP 協議詳細介紹

目錄一、HTTP 的基本概念與歷史演進1. 核心定義2. 歷史版本演進二、HTTP 的核心工作原理1. 請求-響應模型2. 基于 TCP 的傳輸(HTTP/1.1、HTTP/2)三、HTTP 請求結構1. 請求行2. 請求頭3. 請求體四、HTTP 響應結構1. 狀態行2. 響應頭3. 響應體五、HTTP 與 …

正則化:從過擬合到泛化的「平衡藝術」

在機器學習領域,有一個幾乎所有從業者都會遇到的「噩夢」:模型在訓練集上表現完美(損失趨近于0),但在測試集上卻大幅「翻車」。這種現象被稱為「過擬合」(Overfitting),它像一把雙刃…

[Python 基礎課程]根據描述定義一個 Person 類

人都屬于人類這個物種,每一個人都會有姓名和年齡,人都可以介紹自己,隨著時間的流逝,人都會增加年齡,每一個人都能獲取到自己的物種信息。 我們的抽象過程: 所有的 Person 對象都應該有一個共同的屬性來表示…

熱門手機機型重啟速度對比

以下是2023-2024年市場主流熱門手機機型的重啟速度對比分析,基于公開測試數據和用戶反饋整理(數據會因系統版本和測試環境不同存在波動):旗艦機型重啟速度排名(冷啟動)排名機型平均重啟時間關鍵配置優化技術…

第454題.四數相加II

第454題.四數相加II 力扣題目鏈接(opens new window) 給定四個包含整數的數組列表 A , B , C , D ,計算有多少個元組 (i, j, k, l) ,使得 A[i] B[j] C[k] D[l] 0。 為了使問題簡單化,所有的 A, B, C, D 具有相同的長度 N,且 0 ≤ N ≤…

力扣top100(day04-05)--堆

本文為力扣TOP100刷題筆記 筆者根據數據結構理論加上最近刷題整理了一套 數據結構理論加常用方法以下為該文章: 力扣外傳之數據結構(一篇文章搞定數據結構) 215. 數組中的第K個最大元素 class Solution {// 快速選擇遞歸函數int quickselect(…

CCS雙軸相位偏移光源 讓淺凹痕無處遁形

在工業檢測中,淺凹痕表面檢測對精度和可靠性要求極高,工業光源在此過程中扮演著關鍵角色,工業光源通過精準的光學設計(角度、波長、強度)將肉眼不可見的淺凹痕轉化為可量化的光學信號,是實現高精度自動化檢…

專題三_二分_x 的平方根

一:題目解釋:返回x的算數平方根,如果是小數,則舍去小數部分,返回整數即可!二:算法①:暴力從1開始求平方,最后要么直接找到一個值的平方為x,要么發現x在兩個相…

Python 操作 Redis 的客戶端庫 redis-py

Python 操作 Redis 的客戶端庫 redis-py1. Installation2. Connect and test3. Connection Pools4. Redis Commands4.1. set(name, value, exNone, pxNone, nxFalse, xxFalse, keepttlFalse, getFalse, exatNone, pxatNone)4.1.1. setnx(name, value)4.1.2. setex(name, time, …

社區物業HCommunity本地部署手冊

HC小區管理系統安裝手動版 更多文章參考: http://www.homecommunity.cn/pages/hc/hcH5_cn.html 1.0 說明 很多開發不太喜歡用梓豪安裝,希望通過手工自己安裝,這個就需要開發人員 有一定的安裝軟件能力,比如能夠自行安裝mysql能…

單例模式-使用局部變量懶漢不用加鎖

在 C11 及之后,“局部靜態變量懶漢”(Meyers’ Singleton)不需要自己加鎖,標準已經幫你做好了線程安全。 Singleton& getInstance() {static Singleton inst; // ← 這一句并發時只會初始化一次return inst; }首次調用時&am…

51單片機-GPIO介紹

本章概述思維導圖:51單片機引腳介紹STC89系列51單片機引腳介紹STC89系列51單片機的引腳是單片機與外部電路連接的接口,用于實現電源供電、時鐘信號輸入、控制信號輸出以及數據輸入輸出等功能。PDIP封裝引腳圖:1. 電源引腳:VCC&…

CERT/CC警告:新型HTTP/2漏洞“MadeYouReset“恐致全球服務器遭DDoS攻擊癱瘓

2025年8月15日CERT/CC(計算機應急響應協調中心)近日發布漏洞公告,警告多個HTTP/2實現中新發現的缺陷可能被威脅行為者用于發起高效拒絕服務(DoS)或分布式拒絕服務(DDoS)攻擊。該漏洞被非正式命名…