Python 板


LINE

範例如下 https://imgur.com/vaZab8V 如果我今天要找出Store 1中的Cost df.loc["Store 1"]["Cost"] 老師說用這種方法好像會出現問題因此不建議 原文如下: This looks pretty reasonable and gets us the result we wanted. But chaining can come with some costs and is best avoided if you can use another approach. In particular, chaining tends to cause Pandas to return a copy of the DataFrame instead of a view on the DataFrame. For selecting a data, this is not a big deal, though it might be slower than necessary. If you are changing data though, this is an important distinction and can be a source of error. 想請教大家,老師在這邊講的具體上來說是什麼問題? 小的有點看不懂這樣的方法會帶來什麼狀況@@ 不知道是否有前輩可以幫忙指點一二? -- Ο ο 。 ο ○ 。 ○ ° ° ο Ο --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.71.122
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1543927149.A.227.html
1F:推 gmccntzx1: 參考: https://stackoverflow.com/questions/23296282 12/04 21:25
2F:→ gmccntzx1: 還有這個: https://bit.ly/2Edy74i 12/04 21:25
3F:→ gmccntzx1: 簡單來說, `df.loc["Store 1"]["Cost"]` 會透過 2 次 12/04 21:26
4F:→ gmccntzx1: __getitem__ 來取值,後面行為的開始執行時取決於前面 12/04 21:28
5F:→ gmccntzx1: 行為的完成時機。 12/04 21:28
6F:→ gmccntzx1: 若資料可以允許寫成 `df.loc[:, ('Store 1', 'cost')]` 12/04 21:30
7F:→ gmccntzx1: 則 pandas 可以一次根據後面的參數取值,相對來說較快 12/04 21:31
感謝gmccntzxl前輩的分享, 我剛剛研究了一下,我的理解大致上是這樣: chain indexing容易出現問題的狀況是在賦值時, 兩個中括號放在一起時, 第一個中括號的工作(取值) 但是取值後返回的不一定是view或是copy(依照內存狀況不一定) 所以當在處理第二的中括號(賦值)時, 若第一個返回的是copy就有可能會產生SettingWithCopy 這也是為什麼chain indexing這麼不穩定的原因 不知道我這樣的理解是否正確? ※ 編輯: sssh (1.163.71.122), 12/04/2018 23:49:08
8F:推 gmccntzx1: 關於回傳值是 view 還是 copy ,基本上可以照著 12/05 00:48
9F:→ gmccntzx1: stackoverflow 那篇回答的規則去判斷。 12/05 00:49
10F:→ gmccntzx1: 要了解的更詳細的話,推薦你直接去追 source code: 12/05 00:51
11F:→ gmccntzx1: pd.DataFrame.__getitem__ : https://git.io/fpPuH 12/05 00:51
12F:→ gmccntzx1: 裡面有寫到好幾種狀況,比較值得注意的地方有 12/05 00:53
13F:→ gmccntzx1: self._slice (generic._slice): https://git.io/fpPzx 12/05 00:54
14F:→ gmccntzx1: self._take (generic._take): https://git.io/fpP2E 12/05 00:59
15F:→ gmccntzx1: 修正一下:上面的 generic 應該是 generic.NDFrame 12/05 01:01
16F:→ gmccntzx1: 所以說,用 chain indexing 問題在於一般情況下不容易 12/05 01:03
17F:→ gmccntzx1: 判斷出取的值到底是 view 還是 copy (不了解如 12/05 01:04
18F:→ gmccntzx1: stackoverflow 那篇回答所說的規則),而非資料在記憶 12/05 01:06
19F:→ gmccntzx1: 體中的情況差異所影響。 12/05 01:07
20F:→ gmccntzx1: 而因為會影響取值結果是 view/copy 的情況很多種,所以 12/05 01:11
21F:→ gmccntzx1: 官方還是建議少用 chain indexing。 12/05 01:14
22F:推 TitanEric: 推優文 12/05 10:12
23F:→ sssh: 感謝gmccntzxl的分享 12/05 10:32
24F:推 Angesi: df.loc["Store 1","Cost"] 指定位置讀 應該最簡單 12/06 17:05
25F:→ Angesi: 用chain index 實在有點奇怪 12/06 17:05
26F:→ Angesi: 或者 隱含索引 df.iloc[0, 0] 也行 12/06 17:19







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP