Pandas DataframeMutliインデックスをレベルと列の値で並べ替える

JejeBelfort

私は次のようなパンダのデータフレームを持っています:

                         value
           Id              
2014-03-13 1          -3
           2          -6
           3          -3.2
           4          -3.1
           5          -5
2014-03-14 1          -3.4
           2          -6.2
           3          -3.2
           4          -3.2
           5          -5.9

これは基本的に、2つのレベルの多重指数を持つgroupbyオブジェクトです。

valueに従って昇順で並べ替えたいのですが、レベル0(日付)は変更せずに、結果が次のようになるようにします。

                         value
           Id              
2014-03-13 2          -6
           5          -5
           3          -3.2
           4          -3.1
           1          -3
2014-03-14 2          -6.2
           5          -5.9
           1          -3.4
           3          -3.2
           4          -3.2

初期データを生成するコードは次のとおりです。

import pandas as pd

dates = [pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'),
         pd.to_datetime('2014-03-13', format='%Y-%m-%d'),pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d'), 
         pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d')]

values = [-3,-6,-3.2,-3.1,-5,-3.4,-6.2,-3.2,-3.2,-5.9]
Ids = [1,2,3,4,5,1,2,3,4,5]
df = pd.DataFrame({'Id': pd.Series(Ids, index=dates),
                   'value': pd.Series(values, index=dates)})

df = df.groupby([df.index,'Id']).sum()
ジェズリール

私にとってはうまくreset_indexいきますsort_values++ set_index+ rename_axis

df = df.reset_index() \
       .sort_values(['level_0','value']) \
       .set_index(['level_0','Id']) \
       .rename_axis([None, 'Id'])
print (df)
               value
           Id       
2014-03-13 2    -6.0
           5    -5.0
           3    -3.2
           4    -3.1
           1    -3.0
2014-03-14 2    -6.2
           5    -5.9
           1    -3.4
           3    -3.2
           4    -3.2

sort_values+ swaplevel+を使用した別の解決策sort_index

df = df.sort_values('value')
       .swaplevel(0,1)
       .sort_index(level=1, sort_remaining=False)
       .swaplevel(0,1)
print (df)
               value
           Id       
2014-03-13 2    -6.0
           5    -5.0
           3    -3.2
           4    -3.1
           1    -3.0
2014-03-14 2    -6.2
           5    -5.9
           1    -3.4
           3    -3.2
           4    -3.2

スワップレベルが必要な理由は次のとおりです。

print (df.sort_values('value').sort_index(level=0, sort_remaining=False))
               value
           Id       
2014-03-13 1    -3.0
           2    -6.0
           3    -3.2
           4    -3.1
           5    -5.0
2014-03-14 1    -3.4
           2    -6.2
           3    -3.2
           4    -3.2
           5    -5.9

パンダの場合、列とインデックスレベルを一緒に0.23.0並べ替えることができます

df.index.names = ['level1','level2']
print (df.sort_values(['level1','value']))
                   value
level1     level2       
2014-03-13 2        -6.0
           5        -5.0
           3        -3.2
           4        -3.1
           1        -3.0
2014-03-14 2        -6.2
           5        -5.9
           1        -3.4
           3        -3.2
           4        -3.2

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

pandasデータフレームのマルチインデックスレベルでの並べ替え

分類Dev

Pandas でデータフレーム インデックスを並べ替え/並べ替える方法は?

分類Dev

インデックスでPandas DataFrameを並べ替える方法

分類Dev

Pandasデータフレーム列インデックスを日付で並べ替える

分類Dev

Pandasデータフレームグループを最小インデックス番号で並べ替えてから、3番目の列に基づいてグループ内の他のすべての列を並べ替えます

分類Dev

Pandasデータフレームをクラスラベルまたは特定の列で並べ替え/グループ化する方法

分類Dev

pandasデータフレームをアンスタックするときに列を並べ替えないでください

分類Dev

pandasデータフレームの各行を並べ替え、行の並べ替えられた値に基づいて列インデックスを返す方法

分類Dev

別のインデックスの順序によるPandasデータフレームの並べ替え

分類Dev

Pandas dfは、整数インデックスリストに従って行と列を並べ替えます

分類Dev

pandasデータフレームインデックスを並べ替え/並べ替える(必ずしも並べ替える必要はありません)にはどうすればよいですか?

分類Dev

Pandas DataFrame列の値をマルチレベルインデックスと比較する方法は?

分類Dev

Pandas / numpyは、データフレーム全体でのルックアップ、計算、および並べ替えのシーケンスをベクトル化するのに役立ちます

分類Dev

Pandasデータフレームのリストに基づいてインデックス付きの行を並べ替える方法

分類Dev

Pandasデータフレームのデータをアルファベット順に並べ替える

分類Dev

pandasDataFrameを別のデータフレームの列で並べ替える-pandas

分類Dev

Pandasデータフレーム列のリストを並べ替える

分類Dev

Pandas MultiIndexにインデックスを付けるときに並べ替えを回避するにはどうすればよいですか?

分類Dev

行ごとのリスト値に基づいてPandasデータフレームを並べ替える

分類Dev

Pandas DataFrameの再形成:列をインデックスに切り替え、繰り返し値を列として

分類Dev

Pandasデータフレーム:基準1から行インデックスを取得し、基準2で並べ替えます

分類Dev

文字列のリストを使用してPandasデータフレームの列を並べ替える方法

分類Dev

pandasデータフレームの各行を並べ替えて、代わりにインデックスを取得するにはどうすればよいですか?

分類Dev

Python Pandasマルチインデックス:すべてのレベル= 0インデックスで同じ長さのレベル= 1を維持

分類Dev

PandasシリーズはPythonで月のインデックス(時系列が異なる)で並べ替えます

分類Dev

Pandasデータフレームとラベリングの列に基づいてグループ化と並べ替えを実行する関数を作成する

分類Dev

列の部分文字列でPandas Dataframeを並べ替える

分類Dev

Pandasデータフレームの値を一時変数で並べ替える

分類Dev

Pandas DataFrameをMultiIndexと値の両方で並べ替える方法は?

Related 関連記事

  1. 1

    pandasデータフレームのマルチインデックスレベルでの並べ替え

  2. 2

    Pandas でデータフレーム インデックスを並べ替え/並べ替える方法は?

  3. 3

    インデックスでPandas DataFrameを並べ替える方法

  4. 4

    Pandasデータフレーム列インデックスを日付で並べ替える

  5. 5

    Pandasデータフレームグループを最小インデックス番号で並べ替えてから、3番目の列に基づいてグループ内の他のすべての列を並べ替えます

  6. 6

    Pandasデータフレームをクラスラベルまたは特定の列で並べ替え/グループ化する方法

  7. 7

    pandasデータフレームをアンスタックするときに列を並べ替えないでください

  8. 8

    pandasデータフレームの各行を並べ替え、行の並べ替えられた値に基づいて列インデックスを返す方法

  9. 9

    別のインデックスの順序によるPandasデータフレームの並べ替え

  10. 10

    Pandas dfは、整数インデックスリストに従って行と列を並べ替えます

  11. 11

    pandasデータフレームインデックスを並べ替え/並べ替える(必ずしも並べ替える必要はありません)にはどうすればよいですか?

  12. 12

    Pandas DataFrame列の値をマルチレベルインデックスと比較する方法は?

  13. 13

    Pandas / numpyは、データフレーム全体でのルックアップ、計算、および並べ替えのシーケンスをベクトル化するのに役立ちます

  14. 14

    Pandasデータフレームのリストに基づいてインデックス付きの行を並べ替える方法

  15. 15

    Pandasデータフレームのデータをアルファベット順に並べ替える

  16. 16

    pandasDataFrameを別のデータフレームの列で並べ替える-pandas

  17. 17

    Pandasデータフレーム列のリストを並べ替える

  18. 18

    Pandas MultiIndexにインデックスを付けるときに並べ替えを回避するにはどうすればよいですか?

  19. 19

    行ごとのリスト値に基づいてPandasデータフレームを並べ替える

  20. 20

    Pandas DataFrameの再形成:列をインデックスに切り替え、繰り返し値を列として

  21. 21

    Pandasデータフレーム:基準1から行インデックスを取得し、基準2で並べ替えます

  22. 22

    文字列のリストを使用してPandasデータフレームの列を並べ替える方法

  23. 23

    pandasデータフレームの各行を並べ替えて、代わりにインデックスを取得するにはどうすればよいですか?

  24. 24

    Python Pandasマルチインデックス:すべてのレベル= 0インデックスで同じ長さのレベル= 1を維持

  25. 25

    PandasシリーズはPythonで月のインデックス(時系列が異なる)で並べ替えます

  26. 26

    Pandasデータフレームとラベリングの列に基づいてグループ化と並べ替えを実行する関数を作成する

  27. 27

    列の部分文字列でPandas Dataframeを並べ替える

  28. 28

    Pandasデータフレームの値を一時変数で並べ替える

  29. 29

    Pandas DataFrameをMultiIndexと値の両方で並べ替える方法は?

ホットタグ

アーカイブ