gpt4 book ai didi

python - Pandas 应用的更改同时影响 2 列

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:36 25 4
gpt4 key购买 nike

我有下面的数据框。 bet_pl 和 co_pl 跟踪这两个余额的每日变化。我已经根据 co_pl 和 cumsum 更新了 co_balance。

init_balance = D('100.0')
co_thresh = D('1.05') * init_balance

def get_pl_co(row):
if row['eod_bet_balance'] > co_thresh:
diff = row['eod_bet_balance']- co_thresh
return(diff)
else:
return Decimal('0.0')


df_odds_winloss['eod_bet_balance'] = df_odds_winloss['bet_pl'].cumsum()+initial_balance
df_odds_winloss['sod_bet_balance']= df_odds_winloss['eod_bet_balance'].shift(1).fillna(init_balance)
df_odds_winloss['co_pl'] = df_odds_winloss.apply(get_pl_co, axis=1)
df_odds_winloss['co_balance'] = df_odds_winloss['co_pl'].cumsum()

# trying this
df_odds_winloss['eod_bet_balance'] = df_odds_winloss['eod_bet_balance'] - df_odds_winloss['co_pl']

现在我希望 eod_bet_balance 更新为负 co_pl,因为它是两个余额之间的转账,但我没有获得正确的 eod(日终)余额。

谁能给点提示吗?

更新:eod_balances 反射(reflect)了 bet_pl 的变化,但不反射(reflect) co_pl 的后续变化。

最终更新:

initial_balance = D('100.0')
df = pd.DataFrame({ 'SP': res_df['SP'], 'winloss': bin_seq_l}, columns=['SP', 'winloss'])
df['bet_pl'] = df.apply(get_pl_lvl, axis=1)
df['interim_balance'] = df_odds_winloss['bet_pl'].cumsum()+initial_balance
df['co_pl'] = (df['interim_balance'] - co_thresh).clip_lower(0)
df['co_balance'] = df_odds_winloss['co_pl'].cumsum()
df['post_co_balance'] = df['interim_balance'] - df['co_pl']
bf_r = D('0.05')
df['post_co_deduct_balance'] = df['post_co_balance'] - (df['post_co_balance']* bf_r)
df['sod_bet_balance'] = df['post_co_deduct_balance'].shift(1).fillna(init_balance)

The final solution

最佳答案

首先,您不需要应用自定义函数来获取co_pl,可以像这样完成:

df['co_pl'] = (df['eod_bet_balance'] - co_thresh).clip_lower(0)

至于更新另一列,如果我理解正确的话,你想要这样的东西:

df['eod_bet_balance'] = df['eod_bet_balance'].clip_upper(co_thresh)

或者,等效地...

df['eod_bet_balance'] -= df['co_pl']

关于python - Pandas 应用的更改同时影响 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37479532/

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