You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按列对Pandas DataFrame排序?IMDB数据导入后排序报错

解决DataFrame按year列排序的问题

我来帮你搞定这个排序问题!先给你最常用的正确排序写法,再分析可能导致报错的原因和对应的解决办法:

一、正确的排序语法

现在pandas推荐用sort_values()方法来对DataFrame排序,有两种常用方式:

  • 原地修改原DataFrame(直接把原数据排序):
    titles.sort_values(by='year', inplace=True)
    
  • 生成新的排序后DataFrame(保留原数据,返回排序后的新表):
    sorted_titles = titles.sort_values(by='year')
    

二、排查报错的常见原因

如果执行排序时报错,大概率是以下几个问题之一:

  1. 列名拼写错误
    先确认你的列名确实是year,有没有大小写差异(比如Year)或者多余空格。可以用这个命令查看所有列名:
    print(titles.columns)
    
  2. year列数据类型异常
    如果year列是字符串类型(比如导入时被识别为object类型),排序逻辑会出错。先检查类型:
    print(titles['year'].dtype)
    
    如果是object,把它转换成数值类型:
    # errors='coerce'会把无法转换的内容转为NaN,避免报错
    titles['year'] = pd.to_numeric(titles['year'], errors='coerce')
    
  3. 使用了已弃用的旧语法
    你用的pd.DataFrame.from_csv()已经被pandas弃用了,推荐换成更稳定的read_csv:
    titles = pd.read_csv('titles.csv', index_col=None)
    
    另外旧版本pandas里的sort()方法也已经被弃用,必须用sort_values()。
  4. year列存在缺失值(NaN)
    如果有缺失值,排序时可以通过na_position参数控制NaN的位置:
    # 把NaN放在排序结果的末尾
    sorted_titles = titles.sort_values(by='year', na_position='last')
    

三、完整示例代码

import pandas as pd

# 推荐的导入方式
titles = pd.read_csv('titles.csv', index_col=None)

# 检查并转换year列类型
if titles['year'].dtype == 'object':
    titles['year'] = pd.to_numeric(titles['year'], errors='coerce')

# 执行排序
sorted_titles = titles.sort_values(by='year', na_position='last')

# 查看排序后的前几行
print(sorted_titles.head())

内容的提问来源于stack exchange,提问作者arunv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:40:17