python - 寻找更好的解决方案在 pandas 中创建条件列
问题描述
考虑以下
df:
id,flag,amt
10,1,100
11,0,100
13,1,100
14,0,100
当前代码:
def func(row):
if row['flag'] == 1:
val = row['amt'] * 2
else:
val = row['amt']
return val
df['op'] = df.apply(func,axis=1)
输出:
df:
id,flag,amt,op
10,1,100,200
11,0,100,100
13,1,100,200
14,0,100,100
有没有更好的方法来实现这一点?这个解决方案需要时间!
解决方案
您可以通过以下方式批量执行此操作:
df['op'] = (df['flag']+1) * df['amt']
这给了我们:
>>> (df['flag']+1) * df['amt']
0 200
1 100
2 200
3 100
dtype: int64
如果可以有除anddf['flag']
以外的其他值,我们可以使用,例如:0
1
np.where(..)
df['op'] = np.where(df['flag'] == 1, 2*df['amt'], df['amt'])
推荐阅读
- django - 由于夹具错误,Django datadump 和 loaddata 无法正常工作
- algorithm - D* lite:如何比较和排序配对的键?
- stripe-payments - 处理条带支付网关客户延迟的正确方法
- java - Android studio:无法检测到adb版本,退出值0xc0000135
- apache-spark - delta Lake 是否支持加入更新?
- node.js - Base64 到 Pdf 导出问题 AWS Lambda
- amazon-web-services - 如何将自签名证书分配给 AWS elastick beanstalk 应用程序
- python - 如何优雅地处理 for 循环中的多个 continue 语句
- excel - 文本到列工具正在中断我的条件格式
- docker - Streamsets Solr 目标模块错误不允许我直接从管道将数据添加到 Solr 集合