将数据框乘以一列......但值是字符串?

时间:2017-05-15 01:57:09

标签: python pandas numpy dataframe

我有一个Dataframe,其中包含有关受访者的二进制变量'行为和与每个受访者相关的权重。我想把每个受访者的分数乘以'因此我可以轻松获得总体行为的加权平均值。

最简单的方法是将权重列与循环中的另一列相乘,如df.columns[761]*df.columns[i]中所示。但是,当我尝试这样做时,会抛出错误:

  

'不能将序列乘以非类型' str'。'

我不应该有任何字符串,但在有机会的情况下,我尝试将df转换为数字,就像df.apply(pd.to_numeric, errors='coerce')一样。

但问题仍然存在。我在我的智慧'结束。有解决方法吗?我应该逐行进行(如果是这样,我是否需要遍历每一列,或者是否有一个很好的清洁方式?)。

1 个答案:

答案 0 :(得分:2)

您可以随时拆分数据框。

for col in df.columns:
    for index, k in enumerate(df[col]):
        try:
            float(k)
        except:
            # Print out the row number, col and row value that's failing
            print(index, col, k)

完全有可能你有字符串/非类型导致你的乘法。

还有df[col].apply(float),但它不会抓住那些错误的行。