我有一个Dataframe,其中包含有关受访者的二进制变量'行为和与每个受访者相关的权重。我想把每个受访者的分数乘以'因此我可以轻松获得总体行为的加权平均值。
最简单的方法是将权重列与循环中的另一列相乘,如df.columns[761]*df.columns[i]
中所示。但是,当我尝试这样做时,会抛出错误:
'不能将序列乘以非类型' str'。'
我不应该有任何字符串,但在有机会的情况下,我尝试将df
转换为数字,就像df.apply(pd.to_numeric, errors='coerce')
一样。
但问题仍然存在。我在我的智慧'结束。有解决方法吗?我应该逐行进行(如果是这样,我是否需要遍历每一列,或者是否有一个很好的清洁方式?)。
答案 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)
,但它不会抓住那些错误的行。