[問題] pandas賦值取代問題

作者: oo855050 (阿偉)   2019-09-06 16:56:41
板上各位好
小弟目前在寫code時遇到了一個問題
https://imgur.com/27klW2O
上圖為資料
https://imgur.com/vOgRarl
而這是我的code
我想達到的目的是將第4行是a所對應的第2行資料提取後
加上5以後賦值回去
但跑程式後會報錯無法進行如下圖
https://imgur.com/FakgEmX
也許是我程式的邏輯錯誤了QQ
還不是很會寫python的code
希望板上大大能給點幫助
感謝~
作者: chen1i6c04 (輕踏水無痕)   2019-09-06 21:00:00
使用zip和迴圈提取第2行和第4行的值當第4行的值是a時,第2行的值就加5若不是則不動,然後把這些值放入一個list接著將第2行指定為該list好像說的不是很好 囧
作者: sexbear (uu)   2019-09-06 21:34:00
shorturl.at/cuTWX
作者: TitanEric (泰坦)   2019-09-07 10:03:00
這是warning 但還是要改個寫法 請參考他附的連結df.iloc[df.iloc[:, 3] == 'a', 1] += 5請你試一下 手機不方便跑
作者: mirror0227 (鏡子)   2019-09-07 10:42:00
簡單來說就是你的值傳進了 iloc 生成的 copy 裡面。iloc 沒辦法 handle 間接賦值
作者: TitanEric (泰坦)   2019-09-07 10:48:00
發現有錯 請無視我QQ
作者: oo855050 (阿偉)   2019-09-07 20:01:00
這邊先感謝大家的回覆mir大的意思是 iloc只是切片出資料 但並無法直接賦值進原本的資料嗎如果是如此的話 那目前我想達成的目標 應該以什麼指令來實現呢
作者: iphone2003 (307)   2019-09-07 21:48:00
把titan大的第一個iloc改成loc就可以了
作者: TitanEric (泰坦)   2019-09-08 09:06:00
感謝樓上相助
作者: oo855050 (阿偉)   2019-09-09 17:09:00
好的感謝 我晚點來試試^_^titan大的方式修改後可行 感謝^_^另外想問一下為何用iloc不行 用loc就可以呢 其中的原理是什麼

Links booklink

Contact Us: admin [ a t ] ucptt.com