パンダのデータフレームに対して関数を適用するにはどうすればよいですか?

マーティンボバク

私は医療記録を保存するdfを持っており、退院日後に人が最初に行く場所を特定する必要があります。dfはIDでグループ化されています。

3つのオプションがあります。(1)グループ内で、いずれかの行に最初の行end_dateと一致するbegin_dateがある場合、その場所を最初のサイトとして返します(この条件を満たす行が2つある場合は、どちらも正しいです)。(2)最初のオプションが存在しない場合は、最初の場所の後に最初の場所を選択します(3)それ以外の場合、条件1と2が存在しない場合は、「ホーム」を返します

ID    color  begin_date    end_date     location
1     red    2017-01-01    2017-01-07   initial
1     green  2017-01-05    2017-01-07   nursing
1     blue   2017-01-07    2017-01-15   rehab
1     red    2017-01-11    2017-01-22   Health
2     red    2017-02-22    2017-02-26   initial
2     green  2017-02-26    2017-02-28   nursing
2     blue   2017-02-26    2017-02-28   rehab
3     red    2017-03-11    2017-03-22   initial
4     red    2017-04-01    2017-04-07   initial
4     green  2017-04-05    2017-04-07   nursing
4     blue   2017-04-10    2017-04-15   Health

期待される結果:

ID   first_site
1    rehab
2    nursing
3    home
4    nursing

私の試みは以下の通りです。エラー"None of [Int64Index([8], dtype='int64')] are in the [index]"に関するオンラインヘルプがあまりないのにエラーが発生します。elifval2に関する条件を削除しても、エラーは発生しません。

def First(x):
   #compare each group first and see if there are any locations that match 
   val = x.loc[x['begin_date'] == x['end_date'].iloc[0], 'location']
   #find the first location after the initial stay
   val2 = x.loc[x[x.location=='initial'].index+1, 'location']
   if not val.empty:
       return val.iloc[0]
   elif not val2.empty:
       return val2.iloc[0]
   else:
       return 'Home'

final = df.groupby('ID').apply(First).reset_index(name='first_site')
print (final)

私は何が間違っているのですか?

第二次世界大戦

'ID' == 3行は1つだけval2です。式は、そこにない位置にインデックスを付けようとしています。

グループの最初の行が1つだけかどうかを確認します。

def First(x):
    if len(x) == 1:
        return_value = 'Home'
    else:
        val = x.loc[x['begin_date'] == x['end_date'].iloc[0], 'location']
        val2 = x.loc[x[x.location=='initial'].index+1, 'location']
        if not val.empty:
            return_value =  val.iloc[0]
        elif not val2.empty:
            return_value =  val2.iloc[0]
    return return_value

gb = df.groupby('ID')

>>> gb.apply(First)
ID
1      rehab
2    nursing
3       Home
4    nursing
dtype: object
>>>

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

パンダデータフレームの選択した行と列にのみ関数を適用するにはどうすればよいですか?

分類Dev

複数の列を参照する関数をパンダのデータフレームに適用するにはどうすればよいですか?

分類Dev

大きなパンダのデータフレームの行に関数を効率的に適用するにはどうすればよいですか?

分類Dev

パンダのデータフレームに関数をチャンクで適用するにはどうすればよいですか?

分類Dev

「最後から」分割されたパンダのサブデータフレームにpython関数を適用して新しいデータフレームを取得するにはどうすればよいですか?

分類Dev

パンダデータフレームの単一列内の行に関数を適用するにはどうすればよいですか?

分類Dev

ラムダ関数をデータフレームの列に正しく適用するにはどうすればよいですか?

分類Dev

.diff()関数をパンダの日時とNaT値のデータフレームに適用したときに、ばかげた値を取得しないようにするにはどうすればよいですか?

分類Dev

python関数でIF-ELIF-ELSEステートメントをパンダデータフレームのすべての行に正しく適用するにはどうすればよいですか?

分類Dev

ラムダを使用した計算の関数に変化する列数を入力し、パンダのデータフレームに適用するにはどうすればよいですか?

分類Dev

各列に異なる関数を適用してデータフレームをリサンプルするにはどうすればよいですか?

分類Dev

Rを使用してデータフレームの特定の列に関数を適用するにはどうすればよいですか?

分類Dev

異なる入力引数を使用して同じ関数を適用し、パンダデータフレームに新しい列を作成するにはどうすればよいですか?

分類Dev

applyを使用してPython関数からパンダデータフレームに複数の行を返すにはどうすればよいですか?

分類Dev

データフレームのすべての列にグループごとに関数を適用するにはどうすればよいですか?(Pythonパンダの場合)

分類Dev

複数のデータフレームに関数を適用し、それらを上書きするにはどうすればよいですか?

分類Dev

データフレーム内の行のすべての組み合わせに関数を適用するにはどうすればよいですか?

分類Dev

データフレームのすべての行に関数を適用するにはどうすればよいですか?

分類Dev

データフレーム内のすべての要素に関数を適用するにはどうすればよいですか?

分類Dev

複数の分割データフレームの行名に列を強制してから、(長さが等しくない)すべてのデータフレームに関数を適用するにはどうすればよいですか?

分類Dev

パンダのデータフレームのグループを反復処理し、階層条件を適用する関数を作成するにはどうすればよいですか?

分類Dev

繰り返しなしでデータフレームの2列ごとに関数を適用するにはどうすればよいですか?

分類Dev

ラムダを各データフレーム行に適用して、2つの条件をテストするにはどうすればよいですか?

分類Dev

関数を既存のデータフレームに適用した結果を追加するにはどうすればよいですか?

分類Dev

パンダのデータフレームに適用されるPython関数で「NaT」を適切に宣言するにはどうすればよいですか?

分類Dev

パンダのデータフレームに遠隔ルックアップを適用するにはどうすればよいですか?

分類Dev

パンダのデータフレーム列に条件を適用するにはどうすればよいですか?

分類Dev

パンダを使用して複数のデータフレームにPythonでCoalesceを使用するにはどうすればよいですか?

分類Dev

ループを使用して複数のパンダデータフレームから列を削除するにはどうすればよいですか?

Related 関連記事

  1. 1

    パンダデータフレームの選択した行と列にのみ関数を適用するにはどうすればよいですか?

  2. 2

    複数の列を参照する関数をパンダのデータフレームに適用するにはどうすればよいですか?

  3. 3

    大きなパンダのデータフレームの行に関数を効率的に適用するにはどうすればよいですか?

  4. 4

    パンダのデータフレームに関数をチャンクで適用するにはどうすればよいですか?

  5. 5

    「最後から」分割されたパンダのサブデータフレームにpython関数を適用して新しいデータフレームを取得するにはどうすればよいですか?

  6. 6

    パンダデータフレームの単一列内の行に関数を適用するにはどうすればよいですか?

  7. 7

    ラムダ関数をデータフレームの列に正しく適用するにはどうすればよいですか?

  8. 8

    .diff()関数をパンダの日時とNaT値のデータフレームに適用したときに、ばかげた値を取得しないようにするにはどうすればよいですか?

  9. 9

    python関数でIF-ELIF-ELSEステートメントをパンダデータフレームのすべての行に正しく適用するにはどうすればよいですか?

  10. 10

    ラムダを使用した計算の関数に変化する列数を入力し、パンダのデータフレームに適用するにはどうすればよいですか?

  11. 11

    各列に異なる関数を適用してデータフレームをリサンプルするにはどうすればよいですか?

  12. 12

    Rを使用してデータフレームの特定の列に関数を適用するにはどうすればよいですか?

  13. 13

    異なる入力引数を使用して同じ関数を適用し、パンダデータフレームに新しい列を作成するにはどうすればよいですか?

  14. 14

    applyを使用してPython関数からパンダデータフレームに複数の行を返すにはどうすればよいですか?

  15. 15

    データフレームのすべての列にグループごとに関数を適用するにはどうすればよいですか?(Pythonパンダの場合)

  16. 16

    複数のデータフレームに関数を適用し、それらを上書きするにはどうすればよいですか?

  17. 17

    データフレーム内の行のすべての組み合わせに関数を適用するにはどうすればよいですか?

  18. 18

    データフレームのすべての行に関数を適用するにはどうすればよいですか?

  19. 19

    データフレーム内のすべての要素に関数を適用するにはどうすればよいですか?

  20. 20

    複数の分割データフレームの行名に列を強制してから、(長さが等しくない)すべてのデータフレームに関数を適用するにはどうすればよいですか?

  21. 21

    パンダのデータフレームのグループを反復処理し、階層条件を適用する関数を作成するにはどうすればよいですか?

  22. 22

    繰り返しなしでデータフレームの2列ごとに関数を適用するにはどうすればよいですか?

  23. 23

    ラムダを各データフレーム行に適用して、2つの条件をテストするにはどうすればよいですか?

  24. 24

    関数を既存のデータフレームに適用した結果を追加するにはどうすればよいですか?

  25. 25

    パンダのデータフレームに適用されるPython関数で「NaT」を適切に宣言するにはどうすればよいですか?

  26. 26

    パンダのデータフレームに遠隔ルックアップを適用するにはどうすればよいですか?

  27. 27

    パンダのデータフレーム列に条件を適用するにはどうすればよいですか?

  28. 28

    パンダを使用して複数のデータフレームにPythonでCoalesceを使用するにはどうすればよいですか?

  29. 29

    ループを使用して複数のパンダデータフレームから列を削除するにはどうすればよいですか?

ホットタグ

アーカイブ