|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 曼查克 于 2021-2-24 18:14 编辑
先上代码!
- >>> df
- 城市 收入 年龄
- 一 北京 10000 50
- 二 广州 10000 43
- 三 天津 5000 34
- 四 上海 5002 40
- 五 杭州 40000 25
- 六 成都 50000 25
- 七 澳门 8000 45
- 八 南京 5000 32
- 九 北京 5000 25
- 十 北京 5000 25
- >>> df[df['收入'] + df['年龄'] == 5025 ]
- 城市 收入 年龄
- 九 北京 5000 25
- 十 北京 5000 25
- >>> df[df['收入'] + df['年龄'] in [5025] ]
- Traceback (most recent call last):
- File "<pyshell#64>", line 1, in <module>
- df[df['收入'] + df['年龄'] in [5025] ]
- File "C:\python\lib\site-packages\pandas\core\generic.py", line 1329, in __nonzero__
- raise ValueError(
- ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
复制代码
我想筛出收入+年龄等于 5025 or 5032的df
如上所示,单独筛等于一个值是可以做到的,但是我把所有的需求放到一个list里想一起筛的时候就出了问题。
大致原因我也想了一下,可能是因为 df['收入'] + df['年龄'] 对象是 Series,判断它等于一个值会返回一个布尔索引的Series,但是判断Series in list应该是不允许这样写的。
可是我就是想一次性完成多个条件的筛选,请问有办法实现吗?
当然,遍历list一个个筛选再拼接一定是可以的,只是太麻烦了些。
- df[(df['收入']+df['年龄']).map(lambda x :x==5025 or x == 5032)]
复制代码
|
|