使用if-else创建新列时出现熊猫错误:系列的真值不明确

stackoverflowuser2010

我正在使用Pandas,并尝试使用Python if-else语句(又称为三元条件运算符)创建新列,以避免被零除。

例如,在下面的示例中,我想通过除以A / B来创建新列C。我想使用if-else语句来避免除以0。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0, 5, size=(100, 2)), columns=list('AB'))
df.head()
#    A  B
# 0  1  3
# 1  1  2
# 2  0  0
# 3  2  1
# 4  4  2

df['C'] = (df.A / df.B) if df.B > 0.0 else 0.0

但是,我从最后一行得到一个错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我在StackOverflow上进行搜索,发现了有关此错误的其他帖子,但没有一个帖子涉及此类if-else语句。一些帖子包括:

系列的真值含糊不清。使用a.empty,a.bool(),a.item(),a.any()或a.all()

系列的真值在数据框中不明确

错误:系列的真值不明确-Python pandas

任何帮助,将不胜感激。

亚力山大

df.B > 0 产生系列,例如:

0      True  # 4 > 0 => True
1      True  # 2 > 0 => True
2      True  # ...
3      True
4      True
5      True
6      True
7      True
8     False  # 0 is not > 0 => False
9     False  # 0 is not > 0 => False
...

返回多个值会导致歧义(一些为True,另一些为False)。

一种解决方案是使用np.where

sentinel = np.nan  # Or 0 if you must...
df = df.assign(C=np.where(df['B'] != 0, df['A'] / df['B'], sentinel))
>>> df
   A  B    C
0  2  4  0.5
1  0  2  0.0
2  1  2  0.5
3  4  4  1.0
4  1  1  1.0
5  4  4  1.0
6  2  4  0.5
7  1  2  0.5
8  4  0  NaN  # NaN is assigned in cases where the value in Column `B` is zero.
9  1  0  NaN
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python数据框:使用If Then Else逻辑有条件地创建新列->“系列的真值不明确”

ValueError:使用.apply(lambda)时,系列的真值不明确

使用While循环时系列的真值不明确

使用np.where调整熊猫系列(避免ValueError:系列的真值不明确。)

ValueError:在创建新列时,系列的真值不明确

迭代数据帧时出现 ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

使用数据帧列错误绘制 axvline:ValueError:DataFrame 的真值不明确。

ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。大熊猫

错误:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。无法更新数据框列

ValueError:系列的真值不明确。比较数据框列时使用a.empty,a.bool(),a.item(),a.any()或a.all()

遇到错误,系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

我得到ValueError:系列的真值是不明确的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。使用熊猫

系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any()

为什么会出现ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

为什么在使用不带参数类型的 Left 时出现不明确的引用错误?

使用String.Length时出现Math.Ceiling给出“呼叫不明确”错误

熊猫df错误-“系列的真值不明确。” 在if else循环中

在 Python 中运行代码时出错“系列的真值不明确使用 a.empty、a.bool()、a.item()、a.any() 或 a.all(..)”

NumPy错误:包含多个元素的数组的真值不明确。使用a.any()或a.all()

在 DataFrame 中使用 IF 语句并得到错误:Series 的真值不明确

Yahtzee 代码错误:包含多个元素的数组的真值不明确。使用 a.any() 或 a.all()

ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all():返回具有空值的列

按行比较对象列 | Error -ValueError: 系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

更新视图中使用的新列时列名不明确

当我在 Python 中使用 Iflese 时,a 的真值不明确

“ ValueError:具有多个元素的数组的真值不明确。” 使用scipy.integrate.dblquad时

使用 Pandas 绘图时,错误-“索引的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()”是什么意思?

使用 join 从 3 个表中获取数据时出现错误:字段列表中的列“学期”和“部门”不明确

Pandas:一个系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()