【发布时间】:2016-04-27 10:10:48
【问题描述】:
我正在寻找一种方法来简化以下示例:
self.df[TARGET_NAME] = self.df.apply(lambda row: 1 if row['WINNER'] == 1 and row['WINNER_OVER_2_5'] == 1 else 0, axis=1)
喜欢:
self.df[TARGET_NAME] = self.df[(self.df.WINNER == 1)] & self.df[(self.df.WINNER_OVER_2_5 == 1)] # 不是不正确
还有更复杂的如下
df["PROFIT"] = np.where((df[TARGET_NAME] == df["PREDICTED"]) & (df["PREDICTED"] == 0),
df['MATCH_HOME'] * df['HOME_STAKE'],
np.where((dfml[TARGET_NAME] == df["PREDICTED"]) & (df["PREDICTED"] == 1),
df['MATCH_DRAW'] * df['DRAW_STAKE'],
np.where((df[TARGET_NAME] == df["PREDICTED"]) & (df["PREDICTED"] == 2),
df['MATCH_AWAY'] * df['AWAY_STAKE'],
-0))).astype(float)
【问题讨论】:
-
IIUC 你可以使用
df['TARGET_NAME'] = np.where((df.WINNER.isin([1]) & df.WINNER_OVER_2_5.isin([1])),1,0)
标签: python python-2.7 numpy pandas