当前位置: 首页 > 知识库问答 >
问题:

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

于正志
2023-03-14

我在这里遇到了一些问题,在我的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)

共有2个答案

秦博延
2023-03-14

在v0.20中,排序已被DataFrame.sort_values和DataFrame.sort_index。除此之外,我们还可以使用argate

下面是排序中的一些常见用例,以及如何使用当前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_值

df.sort_values(by='A')

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

如果需要新的范围索引,请使用DataFrame.reset\u index

例如,要按df中的"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

您可以使用排序索引执行此操作:

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

颜森
2023-03-14

数据帧的sort()已被弃用,取而代之的是:

  • sort_values()按列排序
  • sort\u index()按索引排序

由于引入了sort\u value()sort\u index()。在0.20版(2017-05-05)中从熊猫身上移除。

 类似资料:
  • 问题内容: 我在这里遇到一些问题,在我的python包中,我已经安装了numpy,但是我仍然 遇到 此错误 ‘DataFrame’对象没有属性’sort’ 任何人都可以给我一些想法。 这是我的代码: 问题答案: 不推荐使用DataFrames,而采用以下两种方法之一: 到 由列排序(S) 要 通过索引排序 在Pandas中已弃用(但仍可用)版本0.17(2015-10-09),并引入和。它已从0.

  • 问题内容: 我想转换火花数据框架以使用以下代码添加: 详细的错误消息是: 有人知道我在这里做错了吗?谢谢! 问题答案: 您无法使用数据框,但可以将数据框转换为RDD并通过映射将其映射。在Spark 2.0之前,别名为。使用Spark 2.0,您必须先明确调用。

  • 当我尝试使用时,出现此错误。用于拉出列的数据帧的ix属性,例如。 这个脚本今天早上还能用,但是今天下午我在一个新的Linux环境中运行了它,安装了新的熊猫。以前有人见过这个错误吗?我找遍了这里和其他地方,但没找到。

  • 问题内容: 我正在尝试过滤出包含产品列表的数据框。但是,我遇到了熊猫-每当我运行代码时,“ dataframe”对象都没有属性“ str”错误。 这是代码行: 如果有人有任何建议的想法,请告诉我。我已经搜索了很多次,而且非常困惑。 产品是对象数据类型。 编辑: 这是头: 编辑2:这是print(data),A是产品。当我将其打印出来时,看起来好像A不在类别产品下。 问题答案: 答案很简单: 改变成

  • 下面的代码以前对我有用,但现在不行了。我得到了错误: AttributeError:“DataFrame”对象没有属性“to df”

  • 我只是想按特定的列订购dask数据帧。 代码1-如果我叫它,它显示为确实是一个ddf 产出1 代码2 产出2 尝试解决方案 这是官方dask文档中的一个示例 仅熊猫-数据帧对象没有属性“sort\u values” 仅熊猫-“DataFrame”对象没有属性“sort” DASK答案-https://stackoverflow.com/a/40378896/10270590 我不想将其设置为索引,