Pandas中的列操作

时间:2013-02-19 03:41:56

标签: python pandas

说我有一个数据框:

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

如何在Pandas中进行这种类型的列式操作?另外,只是想知道df -df.a做了什么?

1 个答案:

答案 0 :(得分: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表示默认轴现在是正确的。