pandas.Series.applyのインデックスにアクセスする。
2023-10-13 11:02:49
質問
MultiIndexシリーズがあるとします。
s
:
>>> s
values
a b
1 2 0.1
3 6 0.3
4 4 0.7
で、その行のインデックスを利用した関数を適用したい。
def f(x):
# conditions or computations using the indexes
if x.index[0] and ...:
other = sum(x.index) + ...
return something
どうすれば
s.apply(f)
を行うことはできますか?このような操作を行うには、どのような方法が推奨されますか?私は、各行と同じMultiIndexにこの関数を適用した結果の値で新しいシリーズを取得することを期待しています。
どのように解決するのですか?
私は信じていません
apply
はインデックスにアクセスすることはできません。これは各行をSeriesではなくnumpyオブジェクトとして扱います。
In [27]: s.apply(lambda x: type(x))
Out[27]:
a b
1 2 <type 'numpy.float64'>
3 6 <type 'numpy.float64'>
4 4 <type 'numpy.float64'>
この制限を回避するには、インデックスをカラムに昇格させ、関数を適用し、元のインデックスでSeriesを再作成してください。
Series(s.reset_index().apply(f, axis=1).values, index=s.index)
他のアプローチでは
s.get_level_values
を使うかもしれませんが、これは私の意見では少し醜いですし、あるいは
s.iterrows()
の方が遅いかもしれません。
f
が何をするかによります。
関連
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] pandasのデータフレームのインデックスをカラムに変換する方法
-
[解決済み] pandas DataFrameの特定のセルに対して、インデックスを使用して値を設定する
-
[解決済み】pandas MultiIndex DataFrameで行を選択する。
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pandasのapply関数で行のインデックスを取得する
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法