Pandas使用sort_values按impressions列排序后结果未变化问题排查
问题原因
Pandas的sort_values()方法默认返回排序后的新DataFrame,不会修改原DataFrame对象。你当前代码仅调用了该方法但未接收返回值,也没有开启原地修改配置,因此原tabelle对象没有发生任何变化,输出结果和修改前一致。
解决方法
共有两种可行方案:
- 方案1:添加
inplace=True参数,直接在原DataFrame上执行排序操作
dataframe = pd.DataFrame(data=records) tabelle=dataframe.copy() tabelle.sort_values(by=['impressions'], inplace=True) print(tabelle[["date","kw_search","impressions"]]) cursor.close() cnx.close()
- 方案2:接收
sort_values()的返回值,赋值给原变量或新变量(该写法更符合Pandas的函数式操作习惯,更推荐使用)
dataframe = pd.DataFrame(data=records) tabelle=dataframe.copy() # 覆盖原变量 tabelle = tabelle.sort_values(by=['impressions']) # 若需要从大到小倒序排序,添加ascending=False参数即可 # tabelle = tabelle.sort_values(by=['impressions'], ascending=False) print(tabelle[["date","kw_search","impressions"]]) cursor.close() cnx.close()
内容的提问来源于stack exchange,提问作者Phan TiDu
相关产品推荐
相关产品推荐

