パンダを使用して他の列の値を保持しながら、列に従ってDataFrameの日付を並べ替えます

Soufiane Sabiri

私はこのようなデータセットを持っています(ここで余分なのは複数の余分な列を意味します)

>>> df = pd.DataFrame({'id_police':['p123','p123','p123','b123','b123'],
                   'dateeffe':['24/01/2018','24/11/2017','25/02/2018','24/02/2018','24/02/2018'],
                   'date_fin':['23/03/2018','23/12/2017','26/03/2018','25/02/2018','25/02/2018'],
                   'prime':[0,20,10,20,30],
                   'prime2':[0,30,10,20,0],
                   'extra':[12,12,13,15,20],
                   ...
})
###
  id_police    dateeffe    date_fin  prime  prime2  extra  ...
0      p123  24/01/2018  23/03/2018      0       0     12  ...
1      p123  24/11/2017  23/12/2017     20      30     12  ...
2      p123  25/02/2018  26/03/2018     10      10     13  ...
3      b123  24/02/2018  25/02/2018     20      20     15  ...
4      b123  24/02/2018  25/02/2018     30       0     20  ...

各列id_police日付(たとえば、2017年、2018年...)を並べ替えたいです。また、各重複で最大プライムを維持する必要がdateeffeありdate_fin、3と4のように同じid_policeです。

これは期待される出力です:

  id_police    dateeffe    date_fin  prime  prime2  extra  ...
0      p123  24/11/2017  23/12/2017     20      30     12  ...
1      p123  24/01/2018  23/03/2018      0       0     12  ...
2      p123  25/02/2018  26/03/2018     10      10     13  ...
3      b123  24/02/2018  25/02/2018     30      20     15  ...

最大のprimeとprime2を見つけるために、私はこれを使用しました:

df = df.groupby(['id_police','dateeffe','date_fin'],as_index=False).agg({'prime':'max','prime2':'max'})

これは私が試したものですが、すべてがグループ化され、余分な列が失われます...

df1 = df.sort_values(['dateeffe','date_fin']).groupby('id_police', as_index=False).apply(lambda x: x) 

私はいたるところを見ました、そして私はあなたの助けに感謝します、事前に感謝します!

Valdi_Bo

私は2段階のgroupbyに基づく解決策を思いついた

の日付による並べ替えを容易にするために、groupby両方の日付のタイプを次のように変更することから始めましょうdatetime

df.dateeffe = pd.to_datetime(df.dateeffe)
df.date_fin = pd.to_datetime(df.date_fin)

2番目の部分は、集計関数の辞書を作成するためのWen-Benによるソリューションのコピーです(スマートソリューション、他の方法で行う必要はありません)。

d = {'prime': 'max', 'prime2': 'max'}
d1 = dict.fromkeys(df.columns.difference(
    ['id_police', 'dateeffe', 'date_fin', 'prime', 'prime2']), 'first')
d.update(d1)

次にgroupby、上記の集計関数を適用して、2番目のステップを含む関数を定義しましょう

def fn(xx):
    return xx.groupby(['dateeffe', 'date_fin'], as_index=False).agg(d)

そして、行うべき唯一のことは、実際の計算、つまり、上記で定義されgroupbyた2番目のステップを適用する最初のステップgroupbyです。

df.groupby('id_police', sort=False).apply(fn)\
    .reset_index(level=1, drop=True).reset_index()

両方のgroupby場合の違いに注意してください

  • 最初のステップにgroupbyはが含まれているsort=Falseため、の元の順序id_policeが維持されます。
  • ただし、2番目のステップにgroupbysort引数がないため、このグループ化により、両方の日付でソートが処理されます。

そして、の両方の呼び出しに関する少しの説明reset_index

df.groupby('id_police', sort=False).apply(fn) 次の多重指数を持つDataFrameを生成します。

id_police  
p123      0
          1
          2
b123      0

最初にreset_index完全に削除し、レベル1(0120)( drop=True)。

しかし、第二には、reset_index実際には、残りのインデックスレベル(変化P123P123P123B123正規カラムに)を、デフォルトのインデックス(0から連番)を作成します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

文字列値の列に従ってパンダのデータフレーム行を並べ替えます

分類Dev

sort_values()を使用して、パンダDataFrameのすべての列を個別に並べ替えます

分類Dev

パンダの一意の値に従って列を並べ替える方法はありますか?

分類Dev

PHPの値に従って配列を並べ替えます

分類Dev

rubyは、文字列部分が空の文字列を保持している日付の配列を並べ替えます

分類Dev

パンダは、別の列からの並べ替え順序を並べ替え/保持しながら、棒グラフにピボットします

分類Dev

SQL Serverは、現在の日付に従ってOrderByを使用してデータを並べ替えます

分類Dev

列名の一致する文字列に従ってパンダのセル(文字列)を並べ替えます

分類Dev

値のカスタム並べ替えを定義し、その並べ替えに従って配列から最大値と最小値を取得する-PHP

分類Dev

日付に従ってSQLServerの複数の列を並べ替える方法

分類Dev

パンダの別の列に従って一意の値を並べ替える

分類Dev

列の値に従ってdataframe.groupbyを並べ替える(ordを減らす)

分類Dev

複雑なファイル名の文字列の日付に従って配列を並べ替える

分類Dev

パンダ:1つの特定の値を下部に保持して値を並べ替えます

分類Dev

VB.netは列を並べ替えてから並べ替えますが、行の位置は保持します

分類Dev

コンパレータを使用して別の配列(長さが異なる)に従って配列を並べ替えると、順序が正しくなくなります

分類Dev

パンダのデータフレームを数値列で並べ替えようとしていますが、奇妙な出力が得られます

分類Dev

順序付けられた配列パターンに従ってbash配列を並べ替えます

分類Dev

パンダの他の列の対応する値に従って列の値を置き換えます

分類Dev

Ruby:日付に従ってグループ化しながら配列の配列の値を平均化する

分類Dev

特定の列の値に従ってパンダデータファイルの文字列を並べ替えるにはどうすればよいですか?

分類Dev

Swiftの与えられたインデックスに従って配列を並べ替えます

分類Dev

パンダの列の値を並べ替えて、代替シーケンスを作成します

分類Dev

awkを使用してbashで別の順序付けられた配列パターンを使用して、複数行の配列を並べ替えます

分類Dev

Javaの複数の列の値に従って配列を並べ替える

分類Dev

Bashの文字列のリストを、特定の部分文字列に従って数値で並べ替えます

分類Dev

データフレーム内の列の名前がわからないとします。その列の値に従ってdfを並べ替えるにはどうすればよいですか?

分類Dev

パンダは値を並べ替えて、グループの各列の上位5つを取得します

分類Dev

パンダで列を並べ替えてから、前の列を並べ替えたまま別の列を並べ替えます

Related 関連記事

  1. 1

    文字列値の列に従ってパンダのデータフレーム行を並べ替えます

  2. 2

    sort_values()を使用して、パンダDataFrameのすべての列を個別に並べ替えます

  3. 3

    パンダの一意の値に従って列を並べ替える方法はありますか?

  4. 4

    PHPの値に従って配列を並べ替えます

  5. 5

    rubyは、文字列部分が空の文字列を保持している日付の配列を並べ替えます

  6. 6

    パンダは、別の列からの並べ替え順序を並べ替え/保持しながら、棒グラフにピボットします

  7. 7

    SQL Serverは、現在の日付に従ってOrderByを使用してデータを並べ替えます

  8. 8

    列名の一致する文字列に従ってパンダのセル(文字列)を並べ替えます

  9. 9

    値のカスタム並べ替えを定義し、その並べ替えに従って配列から最大値と最小値を取得する-PHP

  10. 10

    日付に従ってSQLServerの複数の列を並べ替える方法

  11. 11

    パンダの別の列に従って一意の値を並べ替える

  12. 12

    列の値に従ってdataframe.groupbyを並べ替える(ordを減らす)

  13. 13

    複雑なファイル名の文字列の日付に従って配列を並べ替える

  14. 14

    パンダ:1つの特定の値を下部に保持して値を並べ替えます

  15. 15

    VB.netは列を並べ替えてから並べ替えますが、行の位置は保持します

  16. 16

    コンパレータを使用して別の配列(長さが異なる)に従って配列を並べ替えると、順序が正しくなくなります

  17. 17

    パンダのデータフレームを数値列で並べ替えようとしていますが、奇妙な出力が得られます

  18. 18

    順序付けられた配列パターンに従ってbash配列を並べ替えます

  19. 19

    パンダの他の列の対応する値に従って列の値を置き換えます

  20. 20

    Ruby:日付に従ってグループ化しながら配列の配列の値を平均化する

  21. 21

    特定の列の値に従ってパンダデータファイルの文字列を並べ替えるにはどうすればよいですか?

  22. 22

    Swiftの与えられたインデックスに従って配列を並べ替えます

  23. 23

    パンダの列の値を並べ替えて、代替シーケンスを作成します

  24. 24

    awkを使用してbashで別の順序付けられた配列パターンを使用して、複数行の配列を並べ替えます

  25. 25

    Javaの複数の列の値に従って配列を並べ替える

  26. 26

    Bashの文字列のリストを、特定の部分文字列に従って数値で並べ替えます

  27. 27

    データフレーム内の列の名前がわからないとします。その列の値に従ってdfを並べ替えるにはどうすればよいですか?

  28. 28

    パンダは値を並べ替えて、グループの各列の上位5つを取得します

  29. 29

    パンダで列を並べ替えてから、前の列を並べ替えたまま別の列を並べ替えます

ホットタグ

アーカイブ