第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在Pandas中遍歷DataFrame中的行?

如何在Pandas中遍歷DataFrame中的行?

回首憶惘然 2019-06-06 13:25:43
如何在Pandas中遍歷DataFrame中的行?我有一個(gè)DataFrame熊貓:import pandas as pd inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]df = pd.DataFrame(inp)print df產(chǎn)出:   c1   c20  10  1001  11  1102  12  120現(xiàn)在,我想迭代這個(gè)幀的行。對(duì)于每一行,我都希望能夠通過(guò)列的名稱(chēng)訪問(wèn)其元素(單元格中的值)。例如:for row in df.rows:    print row['c1'], row['c2']在熊貓身上可以這樣做嗎?我發(fā)現(xiàn)了這個(gè)相似問(wèn)題..但這并沒(méi)有給出我想要的答案。例如,建議使用:for date, row in df.T.iteritems():或for row in df.iterrows():但我不明白row對(duì)象,以及我如何處理它。
查看完整描述

3 回答

?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊

首先要考慮你是否真的需要迭代在DataFrame中的行??匆?jiàn)這個(gè)答案尋找其他選擇。

如果仍然需要對(duì)行進(jìn)行迭代,則可以使用下面的方法。注意一些重要注意事項(xiàng)在其他任何答案中都沒(méi)有提到。

  • DataFrame.iterrow()

    for index, row in df.iterrows():
        print row["c1"], row["c2"]
  • DataFrame.itertuples()

    for row in df.itertuples(index=True, name='Pandas'):
        print getattr(row, "c1"), getattr(row, "c2")

itertuples()應(yīng)該比iterrows()

但請(qǐng)注意,根據(jù)醫(yī)生的說(shuō)法(目前熊貓為0.24.2):

  • 迭代:dtype可能不匹配每一行。

    因?yàn)榈袨槊恳恍蟹祷匾粋€(gè)序列,所以不保存跨行的dtype(數(shù)據(jù)框架的跨列保留dtype)。要在對(duì)行進(jìn)行迭代時(shí)保留dtype,最好使用itertuples(),它返回值的namedtuple,并且通常比iterrow()快得多。

  • 迭代行:不要修改行

    你應(yīng)該永遠(yuǎn)不要修改你正在迭代的東西。這并不能保證在所有情況下都能奏效。根據(jù)數(shù)據(jù)類(lèi)型的不同,迭代器返回一個(gè)副本,而不是一個(gè)視圖,對(duì)其進(jìn)行寫(xiě)入將沒(méi)有任何效果。

    使用DataFrame.Apply()相反:

    new_df = df.apply(lambda x: x * 2)
  • 迭代:

    如果列名是無(wú)效的Python標(biāo)識(shí)符、重復(fù)的或以下劃線開(kāi)頭,則列名將重命名為位置名稱(chēng)。對(duì)于大量列(>255),將返回常規(guī)元組。

看見(jiàn)熊貓的迭代文檔更多細(xì)節(jié)。


查看完整回答
反對(duì) 回復(fù) 2019-06-06
?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊


當(dāng)iterrows()是個(gè)不錯(cuò)的選擇,有時(shí)候itertuples()更快:


df = pd.DataFrame({'a': randn(1000), 'b': randn(1000),'N': randint(100, 1000, (1000)), 'x': 'x'})


%timeit [row.a * 2 for idx, row in df.iterrows()]

# => 10 loops, best of 3: 50.3 ms per loop


%timeit [row[1] * 2 for row in df.itertuples()]

# => 1000 loops, best of 3: 541 μs per loop


查看完整回答
反對(duì) 回復(fù) 2019-06-06
  • 3 回答
  • 0 關(guān)注
  • 2355 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)