web-dev-qa-db-ja.com

Pandas Seriesで.sort()関数を呼び出すのはなぜシリーズがその値をその場で並べ替えて何も返さないのですか?

申し訳ありませんが、ここには非常に基本的なものが欠けていると思います:

>>> Series([3,4,0,3]).sort()

出力なし、一方

>>> Series([3,4,0,3]).order()
2    0
0    3
3    3
1    4
dtype: int64

sort()で何が欠けていますか?

ありがとう

編集:

答えてくれてありがとう。今、これが整然としていることに気づきました。でも理由がわかりません

>>> s = Series([3,4,0,3]).sort()
>>> s

ソートされたシリーズを返しません。私が理解すれば マニュアル は、並べ替えられたシリーズを返すはずです。

11
meto

.sort()ソートインプレース

つまり、.sort()を呼び出した後、既存の配列がソートされています。何も返しません。

「コア」Pythonから例をとるには:

In [175]: L = [2, 3, 1, 5]

In [176]: L.sort()

In [177]: print(L)
[1, 2, 3, 5]

Pandas.sort で説明されているように、パンダも同じです。

値とインデックスラベルを所定の位置に値で並べ替えます。 ndarray APIとの互換性のため。戻り値なし

参照:Series.sort()とSeries.order()の違いは何ですか?

4
gerrit

。sort()関数とorder()関数は両方とも[〜#〜]非推奨[〜#〜]

。sort_values()関数が置き換えであり、これを使用する方法の例を次に示します。

例:

import numpy as np
import pandas as pd

arr = np.array([1,3,4,2])
series = pd.Series(arr)

昇順
古いバージョンの.order()関数と同等です。

ascending = series.sort_values() 


降順
。order(ascending = False)と同等

descending = series.sort_values(ascending=False)


インプレース
古いバージョンの.sort()と同等です。

series.sort_values(inplace=True) 

詳細については、こちらの公式ドキュメントを確認してください

4
_In [1]: import pandas as pd
In [2]: s = pd.Series([3,4,0,3]).sort()
In [3]: s
_

実際、_In [3]_は何も出力しません。

_In [4]: type(s)
Out[4]: NoneType
_

理由:

pd.Series([3,4,0,3])確かにa pandas Series type object、BUT Series.sort() methodreturn nothinginplaceソートのため、LHSの式s = pd.Series([3,4,0,3]).sort()sはRHSから何も取得しないため、 _In [3]: s_は何も出力しません。

ご了承ください:

バージョン0.17.0の後、valueメソッドでソートpandas.Series.sort()およびpandas.Series.order()は廃止され、統合pandas.Series.sort_values()APIに置き換えられました。詳細は this answer を参照してください。

4
YaOzI

他のほとんどのpython iterablesと同様に、Series.sort()は実際にはシリーズを並べ替えるだけで何も返しません。たとえば、pythonリストの並べ替えを参照してください:

In [2]: foo = [5, 3, 9]

In [3]: foo.sort()

In [4]: foo
Out[4]: [3, 5, 9]
0
Christian Geier