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

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

使用 loc 方法獲取 DataFrame 的視圖

使用 loc 方法獲取 DataFrame 的視圖

阿晨1998 2022-11-29 15:13:54
我正在嘗試使用該loc方法獲取 pandas 數(shù)據(jù)框的視圖,但是當(dāng)我修改原始 DataFrame 時它沒有按預(yù)期工作。我想使用該loc方法提取 DataFrame 的一行/切片,以便在對 DataFrame 進行修改時,切片反映更改。讓我們看一下這個例子:import pandas as pdimport numpy as npdf = pd.DataFrame({'ID':np.arange(0,5,2), 'a':np.arange(3), 'b':np.arange(3)}).set_index('ID')df    a   bID      0   0   02   1   14   2   2現(xiàn)在我使用 loc 創(chuàng)建一個切片:slice1 = df.loc[[2],]slice1    a   bID      2   1   1然后我修改原來的DataFrame:df.loc[2, 'b'] = 9df    a   bID      0   0   02   1   94   2   2但不幸的是,我們的切片并沒有像我期望的那樣反映這種修改:slice1    a   bID      2   1   1我的期望:    a   bID      2   1   9我發(fā)現(xiàn)使用 和 的組合進行了丑陋的修復(fù)iloc,loc但我希望有更好的方法來獲得我期望的結(jié)果。謝謝您的幫助。
查看完整描述

2 回答

?
狐的傳說

TA貢獻1804條經(jīng)驗 獲得超3個贊

我嘗試測試如何在鏈式賦值中重寫值與 .loc 參考上面@Quang Hoang 共享的 pandas 文檔鏈接。


這是我試過的:


dfmi = pd.DataFrame([list('abcd'),

   list('efgh'),

   list('ijkl'),

   list('mnop')],

   columns=pd.MultiIndex.from_product([['one', 'two'],

   ['first', 'second']]))


df1 = dfmi['one']['second']

df2 = dfmi.loc[:, ('one', 'second')]

df1 和 df2 的輸出:


0    b

1    f

2    j

3    n

迭代 1:


value = ['z', 'x', 'c', 'v']

dfmi['one']['second'] = value

輸出 df1:


0    z

1    x

2    c

3    v

迭代 2:


value = ['z', 'x', 'c', 'v']

dfmi.loc[:, ('one', 'second')] = value

輸出 df2:


0    z

1    x

2    c

3    v

在這兩種情況下,新集合的分配都會改變值。


文件說:


引用 1:“方法 2 (.loc) 比方法 1 (chained []) 更受歡迎”


引用 2:'在簡單情況之外,很難預(yù)測“ getitem ”(由鏈式選項使用)是否會返回視圖或副本(這取決于數(shù)組的內(nèi)存布局,pandas 對此不做任何保證),因此,“ setitem ”(由 .loc 使用)是否會修改 dfmi 或隨后立即被丟棄的臨時對象。


我無法理解上面的解釋。如果 dfmi 中的值可以改變(在我的情況下)并且可能不會改變(就像在 Benoit 的情況下)那么通過哪種方式獲得結(jié)果?不確定我是否遺漏了一點。尋求幫助


查看完整回答
反對 回復(fù) 2022-11-29
?
繁華開滿天機

TA貢獻1816條經(jīng)驗 獲得超4個贊

切片沒有反映您在原始數(shù)據(jù)框中所做的更改的原因是 b/c 您首先創(chuàng)建了切片。

創(chuàng)建切片時,您創(chuàng)建了數(shù)據(jù)切片的“副本”。您沒有直接將兩者聯(lián)系起來。

這里的簡短回答是,您有兩個選擇 1) 首先更改原始 df,然后創(chuàng)建一個切片 2) 不切片,只需使用 .loc 或 iloc 引用原始 df 進行操作


查看完整回答
反對 回復(fù) 2022-11-29
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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