我试图通过第1列和第2列对第0列进行除法。从下面,我想返回10行3列的数据帧。第一列应该都是1。相反,我得到一个10x10的数据帧。我做错了什么?
data = np.random.randn(10,3)
df = pd.DataFrame(data)
df[0] / df
答案 0 :(得分:2)
首先,您应该创建一个10 x 3的DataFrame,所有列都等于第一列,然后将其与您的DataFrame分开。
df[[0, 0, 0]] / df.values
或
df[[0, 0, 0]].values / df
如果要保留列名称。
(我使用.values
来避免因重复列值而失败的重建索引。)
答案 1 :(得分: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