[问题] 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