最後に、よりクリアな説明を参照してください。pandas.DataFrame:外部引数でapplymap()を適用する方法
はhttp://pandas.pydata.org/pandas-docs/version/0.18.1/generated/pandas.DataFrame.apply.htmlによると、あなたは適用関数に外部の引数を渡すことができますが、同じことがapplymapの真実ではないです:http://pandas.pydata.org/pandas-docs/version/0.18.1/generated/pandas.DataFrame.applymap.html#pandas.DataFrame.applymap
私はa
が要素で要素ごとの機能f(a, i)
を、適用したい、とi
です手動で入力した引数。私がそれを必要とする理由は、df.applymap(f)
をループに入れてfor i in some_list
するからです。
私が欲しいものの例を挙げれば、私はDataFrame df
があり、各要素はnumpy.ndarray
です。私は各ndarray
のi
番目の要素を抽出し、それらから新しいDataFrameを形成したいと思います。だから、私はf
を定義します。
def f(a, i):
return a[i]
私はdf
に含まれるnp.ndarray
のそれぞれのi番目の要素を返すでしょうループさせることができるように:各反復におけるよう
for i in some_series:
b[i] = df.applymap(f, i=i)
を、私の値がi
で、関数f
に渡されます。
マルチインデックスをdf
に使用していれば、もっと楽になりましたが、今のところこれが私の作業です。パンダの中で私がしたいことをする方法はありますか?私は理想的には、df
のすべての列のfor-loopingを避けたいと思っています。なぜapplymap
がキーワード引数を取らないのかわかりません。apply
はそうです。
、代わりに含まれる各ndarray
のi
番目の要素の私はそれが私に、各行/列のi
番目の要素を与えるdf.apply
を使用する場合、私は現在、(私は間違っている可能性がある)ことを理解する方法、 df
。
UPDATE:
だから私はちょうど私がシリーズにdf
を分割して、私がやりたいことができpd.Series.apply
を使用することができます実現。
def f(a,i):
return a[i]
b = pd.Series(index=range(10), dtype=object)
for i in b.index:
b[i] = np.random.rand(5)
b.apply(f,args=(1,))
まさに私が期待していることを実行したいと思いますか。しかし、データフレームと試みる:
b = pd.DataFrame(index=range(4), columns=range(4), dtype=object)
for i in b.index:
for col in b.columns:
b.loc[i,col] = np.random.rand(10)
b.apply(f,args=(1,))
は私にValueError: Shape of passed values is (4, 10), indices imply (4, 4)
を与えます。
私はつもりは、私の記事を更新してくれ秒を与えるんです。 –
アップデートを参照してください。 apply関数を私が望むようにする方法はありますか?私はそれが私に与えているエラーを実際に理解していませんが(テキストがたくさんあります)、各要素の 'i'要素の代わりに' b'の 'i'番目の行を返そうとしていると仮定しました。 b。 –
リストやシリーズ、または2Dデータフレームで 'f'を使用しますか? Pandas 'apply'は、DataFrameの入力軸に沿って関数を適用します。そして 'applymap'は、DataFrameの各シリーズに対してmap(func、series)を行うのと同じように、elementwiseを操作するDataFrameに関数を適用します。 –