“ DataFrame”对象没有“ sort”属性

我在这里遇到了一些问题,在我的 python 包中我已经安装了 numpy,但是我仍然有这个错误:

“ DataFrame”对象没有“ sort”属性

任何人都可以给我一些想法. 。

这是我的暗号:

final.loc[-1] =['', 'P','Actual']
final.index = final.index + 1  # shifting index
final = final.sort()
final.columns=[final.columns,final.iloc[0]]
final = final.iloc[1:].reset_index(drop=True)
final.columns.names = (None, None)
191695 次浏览

sort()不支持 DataFrames,而是支持以下两种方式:

随着 sort_values()sort_index()的引入,sort()在熊猫中已被弃用(但仍然可用) ,发布版本为0.17(2015-10-09)。0.20(2017-05-05).

熊猫分类101

在0.20版中,sort已经被 DataFrame.sort_values DataFrame.sort_index 所取代。除此之外,我们还有 argsort

下面是排序中的一些常见用例,以及如何使用当前 API 中的排序函数来解决这些问题。首先,设置。

# Setup
np.random.seed(0)
df = pd.DataFrame({'A': list('accab'), 'B': np.random.choice(10, 5)})
df
A  B
0  a  7
1  c  9
2  c  3
3  a  5
4  b  2

按单列排序

例如,要按列“ A”对 df进行排序,请使用具有单列名称的 sort_values:

df.sort_values(by='A')


A  B
0  a  7
3  a  5
4  b  2
1  c  9
2  c  3

如果需要新的 RangeIndex,请使用 DataFrame.reset_index

按多列排序

例如,要按 df中的 都有 coll“ A”和“ B”进行排序,可以将一个列表传递给 sort_values:

df.sort_values(by=['A', 'B'])


A  B
3  a  5
0  a  7
4  b  2
2  c  3
1  c  9

按数据框架索引排序

df2 = df.sample(frac=1)
df2


A  B
1  c  9
0  a  7
2  c  3
3  a  5
4  b  2

你可以使用 sort_index:

df2.sort_index()


A  B
0  a  7
1  c  9
2  c  3
3  a  5
4  b  2


df.equals(df2)
# False
df.equals(df2.sort_index())
# True

以下是一些与其性能相当的方法:

%timeit df2.sort_index()
%timeit df2.iloc[df2.index.argsort()]
%timeit df2.reindex(np.sort(df2.index))


605 µs ± 13.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
610 µs ± 24.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
581 µs ± 7.63 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

按索引列表排序

比如说,

idx = df2.index.argsort()
idx
# array([0, 7, 2, 3, 9, 4, 5, 6, 8, 1])

这个“排序”问题实际上是一个简单的索引问题。只需要将整数标签传递给 iloc就可以了。

df.iloc[idx]


A  B
1  c  9
0  a  7
2  c  3
3  a  5
4  b  2