【发布时间】:2022-09-30 17:48:02
【问题描述】:
我有一个数据框,有 2 列。
col1
>>> 0 6.382474405435247e+08
1 2.414721440547710e+11
2 1.078680797585678e+13
3 5.234307123383891e+14
4 2.819640463840954e+16
5 1.723860035624660e+18
6 1.221906929903091e+20
7 1.024971897290708e+22
8 1.034685721591756e+24
9 1.266874815617544e+26
Name: col1 , dtype: float64
第二列是
col2
>>> 1 1.652022839203982e+13
2 7.379755212750794e+14
3 3.581032068558979e+16
4 1.929046707578994e+18
5 1.179372536567603e+20
6 8.359631557019926e+21
7 7.012307736342528e+23
8 7.078764509914335e+25
9 8.667277701968806e+27
Name: call2, dtype: float64
现在,当我按元素划分时,正如很多答案中提到的那样,我们只需要像这样划分它们。
df[\'col1\'] / df[\'col2\']
但结果是一个常数
>>> 0 0.014616755793226
1 0.014616755793226
2 0.014616755793226
3 0.014616755793226
4 0.014616755793226
5 0.014616755793226
6 0.014616755793226
7 0.014616755793226
8 0.014616755793226
9 0.014616755793226
dtype: float64
这不应该发生在元素明智的划分中。
如果我通过手动输入值的循环来执行此操作,则它是正确的。
l1 = [6.382474405435247e+08, 2.414721440547710e+11, 1.078680797585678e+13, 5.234307123383891e+14]
l2 = [1.652022839203982e+13, 7.379755212750794e+14, 3.581032068558979e+16, 1.929046707578994e+18]
for i, j in zip(l1, l2):
print(i, j)
print(i / j)
或者,如果我从这些值创建一个新的数据框,那么
s = pd.DataFrame({\"l1\":l1, \"l2\":l2})
s[\'l1\'] / s[\'l2\'] # correct
>>>0 0.000038634298836
1 0.000327208880367
2 0.000301220647270
3 0.000271341647811
我什至将两者都转换为 Numpy,但仍然无法正常工作。
print(df[\'col1\'].to_numpy() / df[\'col2\'].to_numpy())
>>>
[0.01461676 0.01461676 0.01461676 0.01461676 0.01461676 0.01461676
0.01461676 0.01461676 0.01461676 0.01461676]