5

私がデータフレームを持っているとしましょう:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(4,5), columns = list('abcde'))

df.a他のすべての列から列のエントリを差し引きたいと思います。つまり、次の列を列として保持するデータフレームを取得したいと思います。

| col_b - col_a| col_c - col_a| col_d - col_a|

私は試しdf - df.aましたが、これは奇妙なことをもたらします:

  0   1   2   3   a   b   c   d   e
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN

パンダでこのタイプの列単位の操作を行うにはどうすればよいですか?また、疑問に思って、何をしdf -df.aますか?

4

1 に答える 1

7

あなたはおそらくしたいです

>>> df.sub(df.a, axis=0)
   a         b         c         d         e
0  0  0.112285  0.267105  0.365407 -0.159907
1  0  0.380421  0.119536  0.356203  0.096637
2  0 -0.100310 -0.180927  0.112677  0.260202
3  0  0.653642  0.566408  0.086720  0.256536

df-df.a基本的に、他の軸に沿って減算を実行しようとしているため、インデックスが一致しません。減算のようなバイナリ演算子を使用すると、「一致しないインデックスが結合されます」(ドキュメントが言うように)。インデックスが一致しないため、 になります 0 1 2 3 a b c d e

たとえば、物事を転置することにより、より間接的に同じ目的地に到達できます (df.T - df.a).T。これは、反転によりdf、デフォルトの軸が正しい軸になったことを意味します。

于 2013-02-19T03:55:18.523 に答える