質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Python 3.x

    9362questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ピボットテーブルのsort_valuesでエラー

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 103

_hh

score 27

Pandasのpd.pivot_table()を用いて、マーケティング関連のあるデータフレームを集計しました。あるIDコードについて、その各値ごとの売り上げ個数が集計できたのですが、その後、sort_valuesを用いて、販売数の多い順に並べようとしたところ、エラーが出てしまいます。ilocで要素を指定してprintするとちゃんと要素が表示されるのですが、なぜかsort_valuesの時のみエラーとなります。

す。具体的には、以下のコードです。

df_247996_pivot= pd.pivot_table(df_247996, values="販売数", columns="商品コード", aggfunc="sum")
print(df_247996_pivot.iloc[0,1])
df_247996_pivot_sorted = df_247996_pivot.sort_values(by=0,axis=1,ascending=False)


エラーは以下の通りです。(81はprintの結果です)
81


KeyError                                  Traceback (most recent call last)
<ipython-input-32-a842311bfd05> in <module>()

5 print(df_247996_pivot.iloc[0,1])
----> 6 df_247996_pivot_sorted = df_247996_pivot.sort_values(by=0,axis=1,ascending=False)

~\Miniconda3\envs\stats\lib\site-packages\pandas\core\frame.py in sort_values(self, by, axis, ascending, inplace, kind, na_position)
4419             by = by[0]
4420             k = self._get_label_or_level_values(by, axis=axis,
-> 4421                                                 stacklevel=stacklevel)
4422 
4423             if isinstance(ascending, (tuple, list)):

~\Miniconda3\envs\stats\lib\site-packages\pandas\core\generic.py in _get_label_or_level_values(self, key, axis, stacklevel)
1377             values = self.axes[axis].get_level_values(key)._values
1378         else:
-> 1379             raise KeyError(key)
1380 
1381         # Check for duplicates

KeyError: 0

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

行名の指定の仕方に問題あるようです。以下のように列名を指定すると並べ替えられます。

import pandas as pd

df = pd.DataFrame({'code':['a','b','c'],'count':[1,5,3]})
df_p = pd.pivot_table(df, values="count", columns="code", aggfunc="sum")
print(df_p)
"""
code   a  b  c
count  1  5  3
"""

df_s = df_p.sort_values(by=['count'],axis=1,ascending=False)
print(df_s)
"""
code   b  c  a
count  5  3  1
"""

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Python 3.x

    9362questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。