2

我正在尝试将第 0 列除以第 1 列和第 2 列。从下面,我想返回一个 10 行 3 列的数据框。第一列应该都是 1。相反,我得到一个 10x10 的数据框。我究竟做错了什么?

data = np.random.randn(10,3)
df = pd.DataFrame(data)

df[0] / df
4

2 回答 2

2

首先,您应该创建一个 10 x 3 的 DataFrame,其中所有列都等于第一列,然后将它与您的 DataFrame 相除。

df[[0, 0, 0]] / df.values

或者

df[[0, 0, 0]].values / df

如果要保留列名。

(我.values用来避免由于重复的列值而失败的重新索引。)

于 2013-09-13T13:38:05.663 回答
1

您需要将 Series 的维度与 DataFrame 的行匹配。有几种方法可以做到这一点,但我喜欢使用转置。

    data = np.random.randn(10,3)
    df = pd.DataFrame(data)

    (df[0] / df.T).T

       0          1         2
    0  1  -0.568096 -0.248052
    1  1  -0.792876 -3.539075
    2  1 -25.452247  1.434969
    3  1  -0.685193 -0.540092
    4  1   0.451879 -0.217639
    5  1  -2.691260 -3.208036
    6  1   0.351231 -1.467990
    7  1   0.249589 -0.714330
    8  1   0.033477 -0.004391
    9  1  -0.958395 -1.530424
于 2013-09-15T18:49:07.150 回答