如何基于现有pandas DataFrame同时过滤行、选列生成新DataFrame并解决语法报错
你的代码有两个语法错误导致报错:
- 条件判断的相等逻辑误用了赋值符号
=,Python中判断两个值相等需要用双等号==,赋值符号不能用在条件表达式中,这就是你遇到SyntaxError:Keyword can't be an expression的直接原因 loc方法接收行筛选条件和列筛选参数时,如果要选多个列,需要把列名放在列表中传递,不能直接用逗号分隔多个列名
正确的链式操作写法如下:
new_df = old_df.loc[old_df["variable1"] == 2016, ['variable1', 'variable2', 'variable3']]
如果偏好更简洁的写法,也可以用query方法实现:
new_df = old_df.query("variable1 == 2016")[['variable1', 'variable2', 'variable3']]
另外补充说明:你之前分多行写的代码里,过滤行的那行也误用了单等号,实际运行也会报错,替换成双等号即可正常执行。
内容的提问来源于stack exchange,提问作者Ivy McKee
相关产品推荐
相关产品推荐

