【问题标题】:Sorting - TypeError: '<' not supported between instances of 'int' and 'str' , Python排序-TypeError:'int'和'str'的实例之间不支持'<',Python
【发布时间】:2019-07-24 17:49:05
【问题描述】:

我正在尝试对 Excel 进行排序,但出现以下错误:

File "D:\Projects\Project1\venv\lib\site-packages\pandas\core\frame.py", line 4725, in sort_values
    na_position=na_position)
  File "D:\Projects\Project1\venv\lib\site-packages\pandas\core\sorting.py", line 273, in nargsort
    indexer = non_nan_idx[non_nans.argsort(kind=kind)]
TypeError: '<' not supported between instances of 'int' and 'str'

我尝试了以下代码行,我该如何解决这个问题。

excel_file = pd.ExcelFile('file1.xlsx')
    df = excel_file.parse('Sheet1')
    df = df.sort_values(by=['Name'], ascending=True)

    writer = ExcelWriter('File2.xlsx')
    df.to_excel(writer, 'Sheet1', index=False)
    writer.save()

【问题讨论】:

  • 看起来很简单......在你的 xlsx 的某个地方你有一个 int 你希望有字符串的地方,反之亦然。检查您的数据。
  • 您能否显示完整的错误回溯,以便我们查看是哪个代码导致的?

标签: python sorting


【解决方案1】:

听起来您的“名称”列具有混合数据类型 - 一些字符串和一些整数。在进行排序之前,您可以通过将列转换为字符串类型来将整数视为字符串:

df['Name'] = df['Name'].astype(str)
df.sort_values(by='Name', ascending=True, inplace=True)

也就是说,听起来名为“名称”的列中不应包含整数,因此我可能建议在继续使用此解决方案之前更仔细地检查您的数据。

【讨论】:

    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多