次のパンダコードでは、なぜdf
は引数に不要なのですか?パンダ、適用関数、ラムダ
2
A
答えて
1
最初のパラメータは、apply呼び出しの関数に暗黙的に渡されます。したがって、argsに再び現れません。あなたは実際には、無関係の関数を適用して
df.groupby('Category').apply(lambda x: sum(x["Weight (oz.)"] * x["Quantity"]))
ここではまったく使用することなく、書き直すことができます。 x
が明示的に渡されずに渡される最初のパラメータであることは明らかです。
0
さらに一般的には、apply
は、DataFrameインスタンスdf
のメソッドです。
これは、applyに暗黙的にselfパラメータが渡されるという意味になります。呼び出しがapply(self, *args)
であると想像してください。
ここでself
は、DataFrameインスタンスdf
を指します。今度は、df
をもう一度渡すことは(許可されていれば)冗長になるはずです。
0
あなたが、例えば、ここですべてのapply
を必要としない、とだけ あなた'Category'
列によって興味のある2列の製品をグループ化することによって、かなりの操作をスピードアップすることができ、多少関連して言及する価値があります
(df['Weight (oz.)'] * df['Quantity']).groupby(df.Category).sum()
例
df = pd.DataFrame(dict(category=[1, 1, 1, 2, 2, 2, 3, 3, 3]*(10**6),
a = np.random.randint(1, 10, 9*(10**6)),
b=np.random.randint(1, 10, 9*(10**6))))
%timeit (df.a*df.b).groupby(df.category).sum()
1 loop, best of 3: 560 ms per loop
%timeit df.groupby('category').apply(lambda x: sum(x.a*x.b))
1 loop, best of 3: 3.34 s per loop
関連する問題
- 1. パンダのラムダ関数のエラー
- 2. パンダのラムダ関数表記
- 3. パンダローリングウインドウシリーズにラムダ関数を適用する
- 4. パンダのラムダ関数のグループへのアクセス
- 5. パンダのデータフレーム適用関数のデバッグ
- 6. パンダのデータフレームにカスタムクラス/関数を適用
- 7. のpython:パンダは、関数を適用:InvalidIndexError
- 8. 適用関数の引数が複数あるラムダ
- 9. Python Pandasローリングウィンドウに複数のラムダ関数を適用する
- 10. パンダはデータフレーム全体にラムダを適用します
- 11. パンダの2列を使用して関数を適用
- 12. パンダのデータフレームにラムダ関数を適用しているときに発生するキーエラー
- 13. パンダのデータフレームに関数を適用するためにラムダが必要なのはなぜですか?
- 14. Pysparkでラムダ関数を適用するときのキーエラー
- 15. はラムダ、パンダ
- 16. 条件付き行インデックス付きパンダ - ラムダ関数
- 17. パンダの列に関数を適用する
- 18. パンダは、適用関数からDataFrameを返しますか?
- 19. パンダの行の上に関数を適用する
- 20. パンダのデータフレームに関数を適用する
- 21. ラムダ関数
- 22. ラムダ関数(.Core)
- 23. ラムダ関数
- 24. C++ラムダ関数
- 25. AWSラムダ関数
- 26. ラムダを使用して関数を記述して適用する
- 27. AWS用ラムダ関数IOT用ボタン
- 28. ラムダ計算:Scalaで適用
- 29. パンダ:別の列条件に基づいて適用関数を使用する
- 30. 地図を使用してパンダのデータフレーム列に関数を適用する
'にあなたが使用される'軸= 0 'かどうかに応じて 'Series'ように、列または行のいずれかを通過し得る.apply'渡された関数'軸= 1とする。 –