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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas使用什么規(guī)則來生成視圖和副本?

Pandas使用什么規(guī)則來生成視圖和副本?

猛跑小豬 2019-08-26 10:05:36
Pandas使用什么規(guī)則來生成視圖和副本?我對Pandas在決定數(shù)據(jù)幀中的選擇是原始數(shù)據(jù)幀的副本還是原始數(shù)據(jù)的視圖時(shí)所使用的規(guī)則感到困惑。如果我有,例如,df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))我明白a query返回一個副本,就像這樣foo = df.query('2 < index <= 5')foo.loc[:,'E'] = 40對原始數(shù)據(jù)幀沒有影響df。我也理解標(biāo)量或命名切片返回一個視圖,以便分配給這些,例如df.iloc[3] = 70要么df.ix[1,'B':'E'] = 222會改變df。但是當(dāng)談到更復(fù)雜的案件時(shí),我迷失了方向。例如,df[df.C <= df.B]  = 7654321變化df,但是df[df.C <= df.B].ix[:,'B':'E']才不是。是否有一個簡單的規(guī)則,熊貓正在使用,我只是缺少?在這些特定情況下發(fā)生了什么; 特別是,如何更改滿足特定查詢的數(shù)據(jù)幀中的所有值(或值的子集)(正如我在上一個示例中嘗試做的那樣)?
查看完整描述

2 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個贊

這是規(guī)則,后續(xù)覆蓋:

  • 所有操作都會生成副本

  • 如果inplace=True提供,它將就地修改; 只有一些操作支持這一點(diǎn)

  • 設(shè)置的索引器,例如.loc/.iloc/.iat/.at將設(shè)置到位。

  • 獲取單個dtyped對象的索引器幾乎總是一個視圖(取決于內(nèi)存布局,它可能不是這就是為什么這不可靠)。這主要是為了提高效率。(上面的示例是for .query;這將始終返回一個副本作為其評估者numexpr

  • 獲取多重對象對象的索引器始終是副本。

你的榜樣 chained indexing

df[df.C <= df.B].loc[:,'B':'E']

不能保證工作(因此你永遠(yuǎn)不會這樣做)。

相反:

df.loc[df.C <= df.B, 'B':'E']

因?yàn)檫@更快,并將始終有效

鏈?zhǔn)剿饕?個獨(dú)立的python操作,因此不能被pandas可靠地?cái)r截(你經(jīng)常會得到一個SettingWithCopyWarning,但這也不是100%可檢測的)。您指出的開發(fā)文檔提供了更全面的解釋。


查看完整回答
反對 回復(fù) 2019-08-26
?
慕容3067478

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

pandas依賴于numpy來確定是否生成了視圖。在單個dtype情況下(對于一個系列可以是1-d,對于幀可以是2-d)。numpy 可能會生成一個視圖; 這取決于你正在切片的東西; 有時(shí)你可以得到一個觀點(diǎn),有時(shí)你不能。大熊貓完全不依賴于這個事實(shí),因?yàn)橐晥D是否生成并不總是很明顯。但這并不重要,因?yàn)閘oc在設(shè)置時(shí)不依賴于此。然而,當(dāng)鏈索引這是非常重要的(因此為什么鏈索引是壞的)

查看完整回答
反對 回復(fù) 2019-08-26
  • 2 回答
  • 0 關(guān)注
  • 930 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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