首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python、Pandas -根据行和多列中的多个条件对值进行计数

Python、Pandas -根据行和多列中的多个条件对值进行计数
EN

Stack Overflow用户
提问于 2020-01-12 22:17:13
回答 2查看 709关注 0票数 0
代码语言:javascript
运行
复制
import pandas as pd
import datetime as dt

df = []
df = pd.DataFrame({"Sales": [1000, 2000, 3000, 4000, 5000], "Dates": pd.date_range(dt.date.today(), periods=5).astype(str)})

myDate = "2020-01-12"

def count_Commission(row):
  if (row > 3000 or df.Dates < myDate):
    return row * 0.1
  else:
    return 0

df['Commission'] = df.Sales.apply(count_Commission)
print(df)

我想根据销售额(值> 3000)和日期(早于myDate的日期)的标准来计算佣金。我希望看到有lambda和没有lambda的解决方案,并将其作为一个单独的函数或简单的代码(没有def专用函数)。

EN

Stack Overflow用户

回答已采纳

发布于 2020-01-12 22:36:19

使用lambda:

代码语言:javascript
运行
复制
df['Commission'] = df.apply(lambda row: row['Sales'] * 0.1 if (row['Sales'] > 3000 or row['Dates'] < myDate) else 0, axis=1)

具有“专用功能”:

代码语言:javascript
运行
复制
def calculate_commission(row):
    return row['Sales'] * 0.1 if (row['Sales'] > 3000 or row['Dates'] < myDate

df['Commission'] = df.apply(calculate_commission, axis=1)

矢量化(最快):

代码语言:javascript
运行
复制
df['Commission'] = np.where((df['Sales'] > 3000) | (df['Dates'] < myDate), df['Sales'] * 0.1, 0)
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59704701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档