为什么以下失败?
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
这不应该给我一个记录,其中每个列元素乘以数据帧的索引吗?
奇怪的是,这在我的代码中适用于SOMETIMES。它似乎取决于输入DataFrame。
对于上下文,我想要这样做的原因是我有一个DataFrame,其中索引是位置,元素是权重。我想使用这些权重和位置获得每列的质心。为此,我发现以下公式正在运行(看似合理的结果),但有时DataFrame会破坏它导致上述错误
centroids = (df_mat.T*df_mat.index).T.sum()/df_mat.sum()
答案 0 :(得分:2)
这并没有回答我原来的问题"错误发生的原因",但用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