【问题标题】:sort series with pandas in python [duplicate]在python中用熊猫排序系列[重复]
【发布时间】:2016-03-22 16:29:20
【问题描述】:

我从 DataFrame 中选择一列,然后得到一个 Series。如何对系列进行排序?我使用了 Series.sort(),但它不起作用。

df = pd.DataFrame({'A': [5,0,3,8],
                    'B': ['B8', 'B9', 'B10', 'B11']})
df

    A   B
0   5   B8
1   0   B9
2   3   B10
3   8   B11

然后我选择了“A”列

df['A']

    A
 0  5
 1  0
 2  3
 3  8

选择“A”列后,我得到了一个系列,但使用 Series.sort(),它不起作用。

df['A'].sort()

显示错误:

"ValueError: This Series 是其他数组的视图,要就地排序,您必须创建一个副本"

所以我使用 Series.copy() 函数复制系列,然后对系列进行排序,但没有结果。

df['A'].copy().sort()

但是没有返回结果。

我该如何解决这个问题?

【问题讨论】:

  • 你用的是什么版本的熊猫? df['A'].sort_values() 有效吗?
  • 嗨 @EdChum,我使用的是 0.16.2 版本,但 sort_values() 看起来也已弃用。
  • sort_values 是新方法,sort 在以后的版本中已弃用,请注意这一点

标签: python sorting pandas


【解决方案1】:

其中一个对你有用 -

df.sort('A',ascending=False,inplace=True)  #old version
df.sort_values('A',ascending=False,inplace=True) #new version

【讨论】:

  • 很好的答案@shikha
【解决方案2】:

但是没有返回结果。

那是因为排序已经到位,它修改了对象。试试这个

A = df['A'].copy()
A.sort()
print(A)

【讨论】:

    【解决方案3】:

    由于不推荐使用sort() 函数,因此必须使用sort_values(inplace=True) 代替就地排序(source)。

    所以代码应该是这样的:

    A = df['A'].copy()
    A.sort_values(inplace=True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2019-07-27
      • 2018-03-28
      • 2019-12-14
      • 1970-01-01
      • 2013-01-01
      相关资源
      最近更新 更多