パンダの入力として複数の列を使用する関数を適用するにはどうすればよいですか?

ティモフィー・アブラムスキー

relative_humidity(temperature, humidity_index)2つの変数を取る関数があります。

また、一方の列が温度でもう一方の列が湿度インデックスであるDataFrameがあり、この関数を使用して、これらの行を使用して計算される新しい湿度列を作成しようとしています。

このdf.apply()関数を使用してみましたが、複数の列を使用しようとしているため機能しません。また、すべての行をループして各行に関数を適用しようとしましたが、これは遅すぎるようです。助けていただければ幸いです。

編集:私の関数は次のようになります:

def relative_humidity_calculator(T, HI):
    a = c_6 + c_8*T + c_9*T**2
    b = c_3 + c_4*T + c_7*T**2
    c = c_1 + c_2*T + c_5*T**2 -HI
    solutions = []
    #adding both solutions of quadratic to list
    if b**2-4*a*c>=0:
        solutions.append((-b+np.sqrt(b**2-4*a*c))/(2*a))
        solutions.append((-b-np.sqrt(b**2-4*a*c))/(2*a))
        #solution is the correct one if it is between 0 and 100
        if solutions[0]>0 and solutions[0]<100:
            return solutions[0]
        else: 
            return solutions[1]
    else:
        return print('imaginary roots', T, HI, a, b, c)
クアンホアン

更新された質問に基づいて、関数を構成せずにこれを行うことができます。

# sample data:
c1,c2,c3,c4,c5,c6,c7,c8,c9 = range(9)

np.random.seed(1)
df = pd.DataFrame(np.random.randint(0,100,(10,2)), columns=['T','HI'])

# shorthand for Temp and Humidity-Index
T = df['T']
HI = df['HI'] 

# series arithmetic operations are allowed 
a = c6 + c8*T + c9*T**2
b = c3 + c4*T + c7*T**2
c = c1 + c2*T + c5*T**2 - HI

# discriminant too
deltas = b**2-4*a*c 
delta_roots = np.sqrt(b**2 - 4*a*c, where=deltas>0)

# two solutions of quadratic
s0 = (- b + delta_roots)/(2*a)
s1 = (- b - delta_roots)/(2*a)

df['rel_hum'] = np.select(((s0>0) & (s0<100), # condition on first solution
                            deltas>=0),       # quadratic has solutions 
                          (s0, s1), np.nan)

出力:

    T  HI   rel_hum
0  37  12       NaN
1  72   9  0.129917
2  75   5  0.028714
3  79  64 -0.629721
4  16   1       NaN
5  76  71 -0.742304
6   6  25       NaN
7  50  20       NaN
8  18  84       NaN
9  11  28       NaN

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Rの入力として複数のdata.framesを使用してカスタム関数を適用するにはどうすればよいですか?

分類Dev

パンダで複数の列を作成するために複数の列に関数を適用するにはどうすればよいですか?

分類Dev

関数を作成してパンダの各行に適用するにはどうすればよいですか?

分類Dev

パンダの複数の列にNA値を入力するにはどうすればよいですか?

分類Dev

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

分類Dev

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

分類Dev

パンダの場合、列を追加する関数をリサンプリングして適用するにはどうすればよいですか?

分類Dev

関数を複数の列に適用して、Rで複数の新しい列を作成するにはどうすればよいですか?

分類Dev

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

分類Dev

fgetsとstrtokを使用して複数の入力を取得するにはどうすればよいですか?

分類Dev

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

分類Dev

複数のDataFrame列を使用して複雑な関数を適用するにはどうすればよいですか?

分類Dev

別の列の値に応じて、パンダの列に関数を適用するにはどうすればよいですか?

分類Dev

`cellfun`(MATLAB)を使用して複数のパラメーターを持つ関数を適用するにはどうすればよいですか?

分類Dev

Python関数で配列を入力として使用するにはどうすればよいですか?

分類Dev

JOptionPaneと配列を使用して、ユーザーによる複数の入力のリストを作成するにはどうすればよいですか?

分類Dev

データの複数の列に適用される条件を使用して新しい変数を作成するにはどうすればよいですか?

分類Dev

2つのシリーズを入力として使用し、出力が引数の各組み合わせの関数結果のDataFrameである関数を適用するにはどうすればよいですか?

分類Dev

関数の出力を関数内の別の関数の入力として使用するにはどうすればよいですか

分類Dev

関数の出力を関数内の別の関数の入力として使用するにはどうすればよいですか

分類Dev

パンダを使用して、ブックの複数のシートの行と列を削除するにはどうすればよいですか?

分類Dev

関数が複数の入力を必要とする場合、Rのデータフレームのすべての行に関数を適用するにはどうすればよいですか?

分類Dev

パンダ:列名としてnanを使用して複数の列を削除するにはどうすればよいですか?

分類Dev

部分関数の入力として定数整数を取得するにはどうすればよいですか?

分類Dev

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

分類Dev

JavaScriptで配列とオブジェクトの入力を使用して最速の選択関数を作成するにはどうすればよいですか?

分類Dev

変数として保存されている複数の要素に変更イベントを適用するにはどうすればよいですか?

分類Dev

パンダを使用して、同じ行の複数の列で単一の列の値を比較するにはどうすればよいですか?

分類Dev

Directory.EnumerateFiles()を使用して複数の検索パターンを適用するにはどうすればよいですか?

Related 関連記事

  1. 1

    Rの入力として複数のdata.framesを使用してカスタム関数を適用するにはどうすればよいですか?

  2. 2

    パンダで複数の列を作成するために複数の列に関数を適用するにはどうすればよいですか?

  3. 3

    関数を作成してパンダの各行に適用するにはどうすればよいですか?

  4. 4

    パンダの複数の列にNA値を入力するにはどうすればよいですか?

  5. 5

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

  6. 6

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

  7. 7

    パンダの場合、列を追加する関数をリサンプリングして適用するにはどうすればよいですか?

  8. 8

    関数を複数の列に適用して、Rで複数の新しい列を作成するにはどうすればよいですか?

  9. 9

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

  10. 10

    fgetsとstrtokを使用して複数の入力を取得するにはどうすればよいですか?

  11. 11

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

  12. 12

    複数のDataFrame列を使用して複雑な関数を適用するにはどうすればよいですか?

  13. 13

    別の列の値に応じて、パンダの列に関数を適用するにはどうすればよいですか?

  14. 14

    `cellfun`(MATLAB)を使用して複数のパラメーターを持つ関数を適用するにはどうすればよいですか?

  15. 15

    Python関数で配列を入力として使用するにはどうすればよいですか?

  16. 16

    JOptionPaneと配列を使用して、ユーザーによる複数の入力のリストを作成するにはどうすればよいですか?

  17. 17

    データの複数の列に適用される条件を使用して新しい変数を作成するにはどうすればよいですか?

  18. 18

    2つのシリーズを入力として使用し、出力が引数の各組み合わせの関数結果のDataFrameである関数を適用するにはどうすればよいですか?

  19. 19

    関数の出力を関数内の別の関数の入力として使用するにはどうすればよいですか

  20. 20

    関数の出力を関数内の別の関数の入力として使用するにはどうすればよいですか

  21. 21

    パンダを使用して、ブックの複数のシートの行と列を削除するにはどうすればよいですか?

  22. 22

    関数が複数の入力を必要とする場合、Rのデータフレームのすべての行に関数を適用するにはどうすればよいですか?

  23. 23

    パンダ:列名としてnanを使用して複数の列を削除するにはどうすればよいですか?

  24. 24

    部分関数の入力として定数整数を取得するにはどうすればよいですか?

  25. 25

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

  26. 26

    JavaScriptで配列とオブジェクトの入力を使用して最速の選択関数を作成するにはどうすればよいですか?

  27. 27

    変数として保存されている複数の要素に変更イベントを適用するにはどうすればよいですか?

  28. 28

    パンダを使用して、同じ行の複数の列で単一の列の値を比較するにはどうすればよいですか?

  29. 29

    Directory.EnumerateFiles()を使用して複数の検索パターンを適用するにはどうすればよいですか?

ホットタグ

アーカイブ