[問題] if判斷式遇到ValueError

作者: world4849844 (倪好嗎)   2020-03-30 19:06:59
想從一個dataframe中取得某些特定關鍵字的資料
year location rainfall
01 107 台北市 90
02 107 新北市 80
03 108 台北市 70
類似上面的dataframe取得北部區域的資料
附上程式碼
if location in ['台北市', '新北市', '基隆市']:
a = df[df.location.str.contain(台北市)]
b = df[df.location.str.contain(新北市)]
c = df[df.location.str.contain(基隆市)]
d = a.append(b,c)
return d
elif 其他區域
跑的時候遇到
ValueError:The truth value of a DataFrame is ambitious.
有嘗試將
if location in ['台北市', '新北市', '基隆市']
改成
if location == '台北市' or '新北市' or '基隆市'
或用 | 連結都錯誤
有沒有大大知道如何整理此類的資料,或者有資料整理的資源,感謝各位大大
作者: cuteSquirrel (松鼠)   2020-03-30 19:22:00
試試看 isin 語法例子: https://imgur.com/a/c8LpcyG官網isin介紹: https://bit.ly/3dDdRaw
作者: yuasa (XD)   2020-03-30 19:42:00
我從沒用過pandas處理中文字。但我記得Pandas contains只能找"在字串中間"的。假如你的location是 '在台北市地區',contains就找的到。你這個直接用loc就可以了吧?你也可以試試startswith代替contains
作者: pmove (金疾檸檬)   2020-03-30 19:54:00
我也沒用過pandas,但是contain裡面的 台北市,為何不是字串?(沒有‘)
作者: world4849844 (倪好嗎)   2020-03-30 20:11:00
感謝各位大大提供的資訊,先回應樓上的大大,我忘記打到' ',contains中是('台北市')是這樣才對,contains單獨拉出來確實能得到資料,但是前面的if的判斷式中沒辦法將各個城市的名稱用in [list]的方式或'城市名稱'or '城市名稱'分類感謝各位大大解惑,是我自己將append()內加入兩筆資料,才會有錯誤,已經改正了
作者: cayut (自己)   2020-03-31 01:38:00
用樓上那個isin搭配any就可以放在if了if df.location.isin(['台北市']).any():

Links booklink

Contact Us: admin [ a t ] ucptt.com