web-dev-qa-db-ja.com

Pandas DataFrameが `sort_values`を使用して新しい注文を表示しないのはなぜですか?

パンダは初めてなので、大きなアイデアが足りないのではないでしょうか?私はPandas _(500,4)_のような形状のレジスタトランザクションのDataFrameを持っています:

_Time              datetime64[ns]
Net Total                float64
Tax                      float64
Total Due                float64
_

Python3 Jupyter Notebookでコードを処理しています。 any列をソートして過去を取得できません。並べ替えのさまざまなコード例を使用すると、dfを調べても出力の並べ替えが表示されません。したがって、問題を1列だけで注文するように減らしました。

_df.sort_values(by='Time')
# OR
df.sort_values(['Total Due'])
# OR
df.sort_values(['Time'], ascending=True)
_

どの列タイトル、またはどのブール引数を使用しても、表示される結果の順序が変わることはありません。

Jupyterの可能性があると考えて、print(df)df.head()、およびHTML(df.to_html())を使用して結果をプレビューしました(最後の例はJupyterノートブック用です)。また、ノートブック全体をCSVのインポートからこのコードに再実行しました。また、私はPython3(2.7以降)も初めてなので、時々それで行き詰まりますが、この場合、それがどのように関連しているかはわかりません。

別の投稿にも同様の問題があります Python pandas dataframe sort_values not work 。Inそのインスタンスでは、順序は列タイプstringでしたが、ご覧のとおり、ここにあるすべての列は明確にソート可能です。

Pandas DataFrameが_sort_values_を使用して新しい注文を表示しないのはなぜですか?

17
xtian

df.sort_values(['Total Due'])は、ソートされたDFを返しますが、DFは更新されません。

したがって、明示的に行います。

df = df.sort_values(['Total Due'])

または

df.sort_values(['Total Due'], inplace=True)
47
MaxU

私の問題であるfyiは、結果のデータフレームを返さなかったため、PyCharmがそのデータフレームを更新することに煩わされていませんでした。 returnキーワードの後に​​データフレームに名前を付けると、問題が修正されました。

編集:returnは私の明示的なにもかかわらず更新されていなかったため、return dfではなく、メソッドの最後にdfがありました。 -場所の並べ替え。

0
gherson