最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas遍歷DataFrame每一行的多種方法

 更新時(shí)間:2025年09月15日 08:51:38   作者:袁袁袁袁滿  
Pandas遍歷DataFrame有多種方法:iterrows(返回Series,適合需索引)、itertuples(命名元組,高性能)、apply(向量化計(jì)算)、df.values(最快但無列名),最佳實(shí)踐是優(yōu)先使用向量化操作,避免逐行遍歷,大數(shù)據(jù)推薦dask或swifter加速,下面由小編給大家詳細(xì)說說

在 Pandas 中,遍歷 DataFrame 的每一行有多種方法,每種方法適用于不同的場(chǎng)景。以下是常見的幾種方式及其適用場(chǎng)景:

1. iterrows() - 返回索引和行數(shù)據(jù)(Series)

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': ['x', 'y', 'z']})

for index, row in df.iterrows():
    print(f"索引: {index}, A列值: {row['A']}, B列值: {row['B']}")

特點(diǎn)

  • 返回 (index, Series) 對(duì),row 是 Pandas Series 對(duì)象。
  • 缺點(diǎn):性能較差(因?yàn)?row 是 Series,不是原生 Python 類型)。
  • 適用場(chǎng)景:需要訪問行索引和少量數(shù)據(jù)時(shí)。

2. itertuples() - 返回命名元組(更快)

for row in df.itertuples():
    print(f"索引: {row.Index}, A列值: {row.A}, B列值: {row.B}")

特點(diǎn)

  • 返回 namedtuple,訪問列名更方便(如 row.A 而不是 row['A'])。
  • 優(yōu)點(diǎn):比 iterrows() 快很多(因?yàn)橹苯硬僮髟M)。
  • 適用場(chǎng)景:需要高性能遍歷,且不需要修改數(shù)據(jù)。

3. apply() - 對(duì)每行應(yīng)用函數(shù)(推薦)

def process_row(row):
    return f"A={row['A']}, B={row['B']}"

df.apply(process_row, axis=1)  # axis=1 表示按行應(yīng)用

特點(diǎn)

  • 使用向量化操作,比 iterrows() / itertuples() 更快。
  • 適用場(chǎng)景:需要對(duì)每行進(jìn)行計(jì)算并返回新數(shù)據(jù)。

4. items() - 遍歷列(而非行)

for col_name, col_data in df.items():
    print(f"列名: {col_name}")
    print(f"列數(shù)據(jù):\n{col_data}")

特點(diǎn)

  • 遍歷的是 而不是行。
  • 適用場(chǎng)景:需要按列處理數(shù)據(jù)時(shí)。

5. 直接轉(zhuǎn)換為 NumPy 數(shù)組(最快)

for row in df.values:  # 或 df.to_numpy()
    print(f"A={row[0]}, B={row[1]}")  # 按列索引訪問

特點(diǎn)

  • 直接操作 NumPy 數(shù)組,速度最快。
  • 缺點(diǎn):丟失列名,只能按索引訪問。
  • 適用場(chǎng)景:需要極致性能,且不需要列名。

6. 使用 loc 或 iloc 訪問特定行

for i in range(len(df)):
    print(df.loc[i, 'A'])  # 按標(biāo)簽訪問
    print(df.iloc[i, 0])   # 按位置訪問

特點(diǎn)

  • 適用于隨機(jī)訪問特定行。
  • 缺點(diǎn):性能較差(每次調(diào)用 loc / iloc 都有開銷)。

性能對(duì)比

方法速度適用場(chǎng)景
itertuples()????高性能遍歷
apply()???向量化操作
iterrows()?需要索引時(shí)
df.values?????極致性能(無列名)
loc / iloc?隨機(jī)訪問

最佳實(shí)踐

  1. 盡量避免逐行遍歷,優(yōu)先使用 Pandas 的向量化操作(如 df['A'] * 2)。
  2. 如果必須遍歷
    • 需要列名 → itertuples()
    • 需要極致性能 → df.valuesto_numpy()
    • 需要修改數(shù)據(jù) → iterrows()apply()
  3. 大數(shù)據(jù)處理:考慮 daskswifter 加速。

示例:修改 DataFrame 的某一列

# 方法1:使用 iterrows()(不推薦,慢)
for index, row in df.iterrows():
    df.loc[index, 'B'] = row['B'] + '_modified'

# 方法2:使用 apply()(推薦)
df['B'] = df['B'].apply(lambda x: x + '_modified')

# 方法3:向量化操作(最快)
df['B'] = df['B'] + '_modified'

總結(jié)

需求推薦方法
高性能遍歷itertuples()
需要修改數(shù)據(jù)apply() 或 iterrows()
極致性能df.values
向量化計(jì)算直接使用 Pandas/NumPy 操作

盡量避免逐行遍歷,Pandas 的優(yōu)勢(shì)在于 向量化計(jì)算

到此這篇關(guān)于Pandas遍歷DataFrame每一行的多種方法的文章就介紹到這了,更多相關(guān)Pandas遍歷DataFrame每一行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中Socket編程底層原理解析與應(yīng)用實(shí)戰(zhàn)

    Python中Socket編程底層原理解析與應(yīng)用實(shí)戰(zhàn)

    Socket編程是網(wǎng)絡(luò)通信的基礎(chǔ),Python通過內(nèi)置的socket模塊提供了強(qiáng)大的網(wǎng)絡(luò)編程接口,本文將結(jié)合實(shí)際案例,詳細(xì)介紹Python中Socket編程的基本概念、常用方法和實(shí)際應(yīng)用,需要的朋友可以參考下
    2024-08-08
  • Python并行編程多線程鎖機(jī)制Lock與RLock實(shí)現(xiàn)線程同步

    Python并行編程多線程鎖機(jī)制Lock與RLock實(shí)現(xiàn)線程同步

    這篇文章主要為大家介紹了Python并行編程多線程鎖機(jī)制Lock與RLock實(shí)現(xiàn)線程同步示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Windows自動(dòng)化重啟python腳本的方法詳解

    Windows自動(dòng)化重啟python腳本的方法詳解

    小編最近遇到一個(gè)需求,每天都需要定時(shí)重啟一個(gè)python腳本,這個(gè)腳本是跑在windows電腦上的,本文小編整理了三個(gè)實(shí)用的方法,大家可以參考一下
    2025-04-04
  • Pytorch Conda環(huán)境下載慢換源/刪源/恢復(fù)默認(rèn)源的簡(jiǎn)單操作

    Pytorch Conda環(huán)境下載慢換源/刪源/恢復(fù)默認(rèn)源的簡(jiǎn)單操作

    隨著實(shí)驗(yàn)增多,需要分割創(chuàng)建環(huán)境的情況時(shí)有出現(xiàn),在此情況下使用conda create --name xx python=3.10 pytorch torchvision pytorch-cuda -c nvidia -c pytorch -y這樣的指令創(chuàng)建時(shí)如果不換源,往往下載速度很慢,本文介紹了解決辦法,需要的朋友可以參考下
    2024-07-07
  • 深入學(xué)習(xí)python多線程與GIL

    深入學(xué)習(xí)python多線程與GIL

    這篇文章主要介紹了深入學(xué)習(xí)python多線程與GIL,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Django模板報(bào)TemplateDoesNotExist異常(親測(cè)可行)

    Django模板報(bào)TemplateDoesNotExist異常(親測(cè)可行)

    這篇文章主要介紹了Django模板報(bào)TemplateDoesNotExist異常(親測(cè)可行),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python django 增刪改查操作 數(shù)據(jù)庫(kù)Mysql

    python django 增刪改查操作 數(shù)據(jù)庫(kù)Mysql

    下面小編就為大家?guī)硪黄猵ython django 增刪改查操作 數(shù)據(jù)庫(kù)Mysql。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Python中XML轉(zhuǎn)JSON、XML轉(zhuǎn)字典代碼示例

    Python中XML轉(zhuǎn)JSON、XML轉(zhuǎn)字典代碼示例

    大家都知道python的字典和json類似,那么可不可以先將xml轉(zhuǎn)換成json再去做其他的事情呢,下面這篇文章主要給大家介紹了關(guān)于Python中XML轉(zhuǎn)JSON、XML轉(zhuǎn)字典的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • python通過偽裝頭部數(shù)據(jù)抵抗反爬蟲的實(shí)例

    python通過偽裝頭部數(shù)據(jù)抵抗反爬蟲的實(shí)例

    下面小編就為大家分享一篇python通過偽裝頭部數(shù)據(jù)抵抗反爬蟲的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • pytest進(jìn)階教程之fixture函數(shù)詳解

    pytest進(jìn)階教程之fixture函數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于pytest進(jìn)階教程之fixture函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

织金县| 灌云县| 宁南县| 区。| 周至县| 合川市| 嵊泗县| 阳朔县| 图木舒克市| 洪雅县| 砚山县| 开封市| 云霄县| 东山县| 阿坝县| 乐昌市| 长春市| 五原县| 万山特区| 岳西县| 乌鲁木齐县| 夹江县| 临沂市| 汉阴县| 偏关县| 会东县| 和平区| 界首市| 德昌县| 千阳县| 乳源| 灵石县| 蓬莱市| 马鞍山市| 修文县| 太白县| 隆子县| 乌兰察布市| 安康市| 正安县| 徐闻县|