首页 > 解决方案 > Python中DataFrame.append中的SORT参数

问题描述

我有 2 个程序,如下所示:

第一个节目

import pandas as pd

df=pd.DataFrame()

d1={ 12:12,13:13,67:34}

df=df.append(d1,ignore_index=True)

d2={'JIGNESH':{'roll':12,'marks':[12,34]} ,
'AURA':{'roll':134,'marks':[67,67]}
}

df=df.append(d2,ignore_index=True)

print(df)

第二个节目

dfe=pd.DataFrame()

d1={ 12:12,13:13,67:34}

df2=pd.DataFrame(d1,index=[0])

dfe=dfe.append(df2)

df3=pd.DataFrame(
{'JIGNESH': {'roll': 12, 'marks': [12, 34]},
'AURA': {'roll': 134, 'marks': [67, 67]}})

dfe=dfe.append(df3)

print(dfe)

如果是第一个代码,我会得到 ao/p 。在第二个代码的情况下,我得到 ao/p 以及警告说 -

C:\Users\ILESH\Anaconda3\lib\site-packages\pandas\core\indexes\api.py:107: RuntimeWarning: '<' 在 'int' 和 'str' 的实例之间不支持,排序顺序未定义无与伦比的对象 result = result.union(other)

现在我的问题是为什么我只在第二个程序中而不是在第一个程序中得到这个错误?

标签: python

解决方案


在第一段代码中,您的索引只是数字:

df.index
RangeIndex(start=0, stop=2, step=1)

在您的第二段代码中,您的索引混合了数字和字符串类型:

dfe.index
Index([0, 'marks', 'roll'], dtype='object')

在第二个中,它不知道如何对字符串与 int 进行排序,因此它会向您发出警告,类似于您尝试运行以下命令时:

lst=[0,4,5,'a','b',8]
lst.sort()
TypeError: '<' not supported between instances of 'str' and 'int'

推荐阅读