python - 根据条件迭代 Pandas 列

标签 python pandas dataframe numpy

想根据计数、A 和 B 的值计算 C
示例 df:


数数
一种

C


是的
23
2



23
1


是的
41
6



我想要的结果


数数
一种

C


是的
23
2
46


23
1
0

是的
41
6
246


仅当计数值 = 是时计算 C = A*B 否则 C 值 =0
也就是说,它应该跳过计数的 nan 值
任何帮助都是可观的
我正在尝试这个

for ind, row in df.iterrows():
    if df['count'] == 'yes':
        df.loc[ ind, 'C'] =row['A'] *row['B']
    else:
        df.loc[ ind, 'C'] =0
但它给出了错误: ValueError: 系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

最佳答案

另外一个选项:

df.C = df.A.mul(df.B).where(df['count'].eq('yes')).fillna(0)

df
#  count   A  B      C
#0   yes  23  2   46.0
#1   NaN  23  1    0.0
#2   yes  41  6  246.0
或者,如果您更喜欢运营商:df.C = (df.A * df.B).where(df['count'] == 'yes').fillna(0)

关于python - 根据条件迭代 Pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66502388/

相关文章:

python - PyQT - 如何获取图像选择的坐标

python - 访问/使用元组列表中的元素 python 3.x

python - 按几乎相似的字符串分组

python - 如何获取字典中列表的第一个元素并添加到 Python 中的 Pandas Dataframe 列?

python - 类型错误 : predict() missing 1 required positional argument: 'params'

python - 如何获取可调用对象的签名参数,或可靠地确定何时这是不可能的?

Python:如何在列表中查找与元素名称的一部分匹配的元素

python - 如何从列中给出的多个标签创建列表

python - 如何将 pandas DataFrame 转换为特定的带注释的类 csv 格式(内部描述)

python - 如何根据 Pandas 中的条件现有列创建两列?