python - 循环返回错误,表示级数的真实值不明确

标签 python pandas loops conditional-statements

我有以下数据集:

enter image description here

我试图告诉 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().

最佳答案

检查这个答案: Python Use if function: ValueError: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/

相关文章:

python - 优化 groupby 聚合 pandas

python - 将 Salesforce 报告导出为 CSV

python - 如何使用 pymongo 构建变量查询

python - 获取今天日期的所有对象,django

python - 使用 pandas apply with dates and dates shifted

javascript - 如何在 Angular 中使用 splice 从列表中删除项目?

Python 切片和负步幅——为什么这些例子明显矛盾?

python - 规范化多值列

C++ vector 下标超出范围第 1201 行

php - 如何在相同的id但不同的列值下插入值?