タグ付けされた質問 「apply」

引数のリストを使用して別の関数を呼び出す関数。

5
パンダは他の列の値に基づいて新しい列を作成します/行ごとに複数の列の関数を適用します
私は、これらの6つの列(に(それがあれば、他のはしごを使用しています)私のカスタム関数を適用したいERI_Hispanic、ERI_AmerInd_AKNatv、ERI_Asian、ERI_Black_Afr.Amer、ERI_HI_PacIsl、ERI_White私のデータフレームの各行の)。 私は他の質問とは異なる方法を試しましたが、それでも私の問題に対する正しい答えを見つけることができないようです。これの重要な部分は、人がヒスパニックとして数えられるならば、彼らは他のものとして数えることができないということです。別の民族の列に「1」がある場合でも、2人以上ではなくヒスパニック系としてカウントされます。同様に、すべてのERI列の合計が1より大きい場合、それらは2つ以上の人種としてカウントされ、一意の民族として数えることはできません(ヒスパニックを除く)。うまくいけば、これは理にかなっています。どんな助けでも大歓迎です。 これは、各行でforループを実行するのとほとんど同じです。各レコードが基準を満たしている場合は、1つのリストに追加され、元のリストから削除されます。 以下のデータフレームから、SQLの次の仕様に基づいて新しい列を計算する必要があります。 =========================基準======================== ======= IF [ERI_Hispanic] = 1 THEN RETURN “Hispanic” ELSE IF SUM([ERI_AmerInd_AKNatv] + [ERI_Asian] + [ERI_Black_Afr.Amer] + [ERI_HI_PacIsl] + [ERI_White]) > 1 THEN RETURN “Two or More” ELSE IF [ERI_AmerInd_AKNatv] = 1 THEN RETURN “A/I AK Native” ELSE IF [ERI_Asian] = 1 THEN RETURN “Asian” ELSE …
316 python  pandas  numpy  apply 

6
複数の列を参照する私のパンダの「適用」機能が機能しないのはなぜですか?[閉まっている]
閉まっている。この質問は再現性がないか、タイプミスが原因です。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 昨年休業。 この質問を改善する 次のデータフレームで複数の列を使用すると、パンダの適用機能に問題があります df = DataFrame ({'a' : np.random.randn(6), 'b' : ['foo', 'bar'] * 3, 'c' : np.random.randn(6)}) そして次の機能 def my_test(a, b): return a % b 私がこの関数を適用しようとすると: df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1) エラーメッセージが表示されます。 NameError: ("global name 'a' is not defined", u'occurred at index 0') このメッセージを理解できません。名前を正しく定義しました。 …

5
Rの適用ファミリーは構文糖質以上のものですか?
...実行時間および/またはメモリに関して。 これが当てはまらない場合は、コードスニペットで証明してください。ベクトル化による高速化は考慮されないことに注意してください。スピードアップはから来なければならないapply(tapply、sapply、...)そのもの。
152 r  apply 

11
すべての値がNAであるデータフレームから列を削除します
私は、データフレームとのトラブルを抱えていると、本当にその問題を自分で解決できませんでした:データフレームは、任意の持っている列などのプロパティをし、各行は 1つのを表すデータセットを。 問題は、すべての行の値がNA である列を取り除く 方法です。
149 r  apply  dataframe 

4
Pythonパンダ:引数付きの関数をシリーズに適用する
引数付きの関数をpython pandasのシリーズに適用したい: x = my_series.apply(my_function, more_arguments_1) y = my_series.apply(my_function, more_arguments_2) ... ドキュメントには、この方法を適用するためのサポートを説明したが、それは引数を受け付けません。引数を受け入れる別のメソッドはありますか?または、簡単な回避策がありませんか? 更新(2017年10月): この質問はもともとパンダapply()が位置引数とキーワード引数を処理するように更新されていることを尋ねられたため、上記のドキュメントリンクはこれを反映し、いずれかのタイプの引数を含める方法を示しています。
147 python  pandas  apply 

4
「* apply」ファミリーは本当にベクトル化されていませんか?
したがって、私たちはすべてのRの新規ユーザーに「applyベクトル化されていません。パトリックバーンズRインフェルノサークル4をチェックしてください」と言っています(引用します)。 一般的な反射は、適用ファミリーで関数を使用することです。これは ベクトル化ではなく、ループ非表示です。apply関数の定義にはforループがあります。lapply関数はループを埋めますが、実行時間は明示的なforループとほぼ同じになる傾向があります。 実際、applyソースコードをざっと見てみると、ループがわかります。 grep("for", capture.output(getAnywhere("apply")), value = TRUE) ## [1] " for (i in 1L:d2) {" " else for (i in 1L:d2) {" これまでのところ、わかりましたが、見てみるとlapply、vapply実際にはまったく異なる画像が表示されます。 lapply ## function (X, FUN, ...) ## { ## FUN <- match.fun(FUN) ## if (!is.vector(X) || is.object(X)) ## X <- as.list(X) ## .Internal(lapply(X, FUN)) ## …

6
行列またはデータフレームのすべての行に関数を適用する
私が2行2列の行列と、引数の1つとして2ベクトルを使用する関数があるとします。関数を行列の各行に適用して、nベクトルを取得したいと思います。Rでこれを行う方法? たとえば、3点の2D標準正規分布の密度を計算したいとします。 bivariate.density(x = c(0, 0), mu = c(0, 0), sigma = c(1, 1), rho = 0){ exp(-1/(2*(1-rho^2))*(x[1]^2/sigma[1]^2+x[2]^2/sigma[2]^2-2*rho*x[1]*x[2]/(sigma[1]*sigma[2]))) * 1/(2*pi*sigma[1]*sigma[2]*sqrt(1-rho^2)) } out <- rbind(c(1, 2), c(3, 4), c(5, 6)) 関数を各行に適用する方法はout? 指定する方法で関数へのポイント以外の引数に値を渡す方法は?
129 r  function  matrix  apply  sapply 

4
コードでパンダapply()をいつ使用したいですか?
Stack OverflowでPandasメソッドの使用に関する質問に投稿された多くの回答を見てきましたapply。また、「apply遅く、避けた方がいい」とのコメントをユーザーから見たことがあります。 パフォーマンスapplyが遅いという説明のある記事をたくさん読んだことがあります。また、ドキュメントでapplyUDFを渡すための単純な便利な関数についての免責事項も確認しました(現在、それを見つけることができないようです)。したがって、一般的なコンセンサスは、apply可能であれば回避する必要があるということです。ただし、これにより次の質問が生じます。 applyひどい場合は、なぜAPIにあるのですか? いつ、どのようにしてコードをapplyフリーにする必要がありますか? どんな状況で、これまで存在しapplyている良い(他の可能な解決策よりも良い)は?

9
パンダから複数の列を返しますapply()
私はパンダのDataFrameを持っていますdf_test。バイトでサイズを表す「サイズ」列が含まれています。次のコードを使用して、KB、MB、GBを計算しました。 df_test = pd.DataFrame([ {'dir': '/Users/uname1', 'size': 994933}, {'dir': '/Users/uname2', 'size': 109338711}, ]) df_test['size_kb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0, grouping=True) + ' KB') df_test['size_mb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0 ** 2, grouping=True) + ' MB') df_test['size_gb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0 ** 3, grouping=True) …


1
DataFrameの各セルに関数を適用します
次のようなデータフレームがあります。 A B C foo bar foo bar bar foo foo bar 各行のすべての要素(または各列のすべての要素)を調べて、次の関数を適用して後続のDFを取得したいと思います。 def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 各セルに機能を適用できるシンプルなワンライナーはありますか? これは単純な例であるため、関数を適用する以外にこの特定の例を実行する簡単な方法があるかもしれませんが、私が本当に求めているのは、データフレーム内のすべてのセルに関数を適用する方法です。

4
Rでループが遅いのはなぜですか?
ループが遅いので、R代わりにベクトル化された方法で物事を実行しようとする必要があることを私は知っています。 しかし、なぜ?ループが遅くてapply速いのはなぜですか?applyいくつかのサブ関数を呼び出します-それは速くはないようです。 更新:申し訳ありませんが、質問は不適切でした。ベクトル化とを混同していましたapply。私の質問は、 「なぜベクトル化が速いのですか?」
86 performance  r  apply 

3
`vapply`が` sapply`より安全なのはなぜですか?
ドキュメントには vapplyに似てsapplyいますが、事前に指定されたタイプの戻り値があるため、より安全に使用できます[...]。 なぜ一般的に安全なのか、例を挙げて詳しく教えてください。 PS:私は答えを知っています、そして私はすでに避けがちsapplyです。同僚にそれを指摘できるように、ここSOに良い答えがあったらいいのにと思います。「マニュアルを読む」という答えはありません。
84 r  apply  r-faq 

5
Math.max.apply()はどのように機能しますか?
どのように機能しMath.max.apply()ますか? <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>JS Bin</title> </head> <body> <script> var list = ["12","23","100","34","56", "9","233"]; console.log(Math.max.apply(Math,list)); </script> </body> </html> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max 上記のコードは、リスト内の最大数を検索します。以下のコードはどのように機能するのか誰か教えてもらえますか?合格すればうまくいくようですnull or Math. console.log(Math.max.apply(Math,list)); すべてに、user-defined/Native functions使用できるcall and applyメソッドがありますか?

3
パンダは、1つの列の値の条件に基づいて、一度に複数の列の値を上書きします
私はそのようなDataFrameを持っています: df = pd.DataFrame(data={ 'col0': [11, 22,1, 5] 'col1': ['aa:a:aaa', 'a:a', 'a', 'a:aa:a:aaa'], 'col2': ["foo", "foo", "foobar", "bar"], 'col3': [True, False, True, False], 'col4': ['elo', 'foo', 'bar', 'dupa']}) col1の ":"で分割した後、リストの長さを取得したい場合、長さ> 2の場合は値を上書きするか、長さ<= 2の場合は値を上書きしないようにします。 理想的には、1行でできるだけ速く。 現在、私は試みますが、それはValueErrorを返します。 df[['col1', 'col2', 'col3']] = df.loc[df['col1'].str.split(":").apply(len) > 2], ("", "", False), df[['col1', 'col2', 'col3']]) 編集:col1の条件。EDIT2:すべての素晴らしくて迅速な回答に感謝します。すごい!EDIT3:10 ^ 6行のタイミング: …
11 python  pandas  apply 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.