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专用函数)。
发布于 2020-01-12 22:36:19
使用lambda:
df['Commission'] = df.apply(lambda row: row['Sales'] * 0.1 if (row['Sales'] > 3000 or row['Dates'] < myDate) else 0, axis=1)具有“专用功能”:
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)矢量化(最快):
df['Commission'] = np.where((df['Sales'] > 3000) | (df['Dates'] < myDate), df['Sales'] * 0.1, 0)https://stackoverflow.com/questions/59704701
复制相似问题