gpt4 book ai didi

python - 如何在 Pandas 中使用条件进行计算?

转载 作者:行者123 更新时间:2023-11-28 20:59:16 24 4
gpt4 key购买 nike

我正在尝试编写一个条件,以便在新列中获取平均每次访问费用。但是,如果访问次数为 0,那么我想改用“1”,这样 Visit_cost 就不是无穷大。

我的方法是抛出一个错误:

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

df

id    Cost          Visit
2 52 1
3 85 0
4 853 10

df['VISIT_COST'] = [df['Cost']/df['Visit'] if df['Visit'] != 0 else df['Cost']/1]

最终目标:

id    Cost          Visit    VISIT_COST
2 52 1 52
3 85 0 85
4 853 10 85.3

最佳答案

我认为这里最好使用 numpy.where ,因为非常快:

df['VISIT_COST'] = np.where(df['Visit'] != 0, df['Cost']/df['Visit'], df['Cost'])
print (df)
id Cost Visit VISIT_COST
0 2 52 1 52.0
1 3 85 0 85.0
2 4 853 10 85.3

开箱即用的解决方案 - 将 0 替换为 1 添加转换为整数的 bool 掩码:

df['VISIT_COST'] = df['Cost'].div(df['Visit'].eq(0).astype(int).add(df['Visit']))
print (df)
id Cost Visit VISIT_COST
0 2 52 1 52.0
1 3 85 0 85.0
2 4 853 10 85.3

详细信息:

print (df['Visit'].eq(0).astype(int))
0 0
1 1
2 0
Name: Visit, dtype: int32

print (df['Visit'].eq(0).astype(int).add(df['Visit']))
0 1
1 1
2 10
Name: Visit, dtype: int64

关于python - 如何在 Pandas 中使用条件进行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49883194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com