我有以下数据集:
我试图告诉 Pandas :
如果报告编号低于30,他需要创建一个等于的新变量
df_bei_index[col]*0.05 + df_bei_index['PDI_Average']*0.95.
如果报告编号大于或等于30,他需要创建一个等于的新变量
df_bei_index[col]
我编写了以下代码:
for col in col_list:
if df_bei_index['Report No'] <= 29:
df_bei_index[col+'_final'] = df_bei_index[col]*0.05 + df_bei_index['PDI_Average']*0.95
else:
df_bei_index[col+'_final'] = df_bei_index[col]
但我收到此错误
ValueError Traceback (most recent call last) in () 10 11 for col in col_list: ---> 12 if df_bei_index['Report No'] <= 29: 13 df_bei_index[col+'_final'] = df_bei_index[col]*0.05 + df_bei_index['PDI_Average']*0.95 14 else:
~\Anaconda3\lib\site-packages\pandas\core\generic.py in nonzero(self) 1574 raise ValueError("The truth value of a {0} is ambiguous. " 1575 "Use a.empty, a.bool(), a.item(), a.any() or a.all()." -> 1576 .format(self.class.name)) 1577 1578 bool = nonzero
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
最佳答案
您可能想使用 np.where:
for col in col_list:
df_bei_index[col+'_final'] = np.where(df_bei_index['Report No'] <=29, df_bei_index[col]*0.05 + df_bei_index['PDI_Average']*0.95, df_bei_index[col])
我假设您从“col_list”列表中排除“国家/地区”列
关于python - 循环返回错误,表示级数的真实值不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54688521/