gpt4 book ai didi

python - 在 DataFrame 中查找质心时出现 "ValueError: cannot evaluate a numeric op with unequal lengths"

转载 作者:行者123 更新时间:2023-12-01 04:53:37 26 4
gpt4 key购买 nike

为什么以下失败?

import pandas as pd
import numpy as np
df = pd.DataFrame({1:[1,2,3,], 2:[4,5,6]},index=np.linspace(0,1,3))
df.T*df.index


ValueError: cannot evaluate a numeric op with unequal lengths

这不应该给我一条记录,其中每个列元素都乘以数据帧的索引吗?

奇怪的是,这有时在我的代码中有效。它似乎取决于输入的 DataFrame。

就上下文而言,我想这样做的原因是我有一个 DataFrame,其中索引是位置,元素是权重。我想使用这些权重和位置获取每列的质心。为此,我发现以下公式有效(结果看似合理),但有时 DataFrame 会破坏它,从而导致上述错误

centroids = (df_mat.T*df_mat.index).T.sum()/df_mat.sum()

最佳答案

这并没有回答我最初的“为什么会发生错误”的问题,但是用 df.index.values` 替换 df.index 可以解决问题:

import pandas as pd
import numpy as np
df = pd.DataFrame({1:[1,2,3,], 2:[4,5,6]},index=np.linspace(0,1,3))
new_df = df.T*df.index.values
print new_df.T

达到预期效果:

     1    2
0.0 0 0.0
0.5 1 2.5
1.0 3 6.0

关于python - 在 DataFrame 中查找质心时出现 "ValueError: cannot evaluate a numeric op with unequal lengths",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com