[英]How to correctly loop pandas dataframe creating new columns
我有这个数据框(名称:res_d)
time entry take_profit stop_loss
2022-04-05 3881.5 False 3854.5
2022-04-06 3835.5 False 3816.5
2022-04-07 3767.0 3785.5 False
2022-04-08 3781.5 3793.5 False
2022-04-09 False False False
我想根据列值创建新列“pl_stop”,所以我使用:
res_d = result_111.fillna(False)
for index, row in res_d.iterrows():
if res_d['entry'].all() != False and res_d['take_profit'].all() == False and res_d['stop_loss'].all() != False:
res_d['pl_stop'] = res_d['stop_loss'] - res_d['entry']
问题是当我打印 res_d 时它不显示“pl_stop”列,我不明白问题出在哪里,有什么想法吗?
np.where((res_d['entry']!=False) & (res_d['take_profit']==False) & (res_d['stop_loss']!=False), res_d['stop_loss'] - res_d['entry'], np.nan)
我最喜欢的方法是:
df.loc[(condition), 'new_column'] = 'value'
示例条件:
(df.col >= 10) & (df.col2.notna())
尝试这个
填充 NaN 值:
res_d = res_d.fillna(False)
exp = (res_d['entry'].all() != False) and (res_d['take_profit'].all() == False) and (res_d['stop_loss'].all() != False)
然后:
for index, row in res_d.iterrows():
if exp:
res_d['pl_stop'] = res_d['stop_loss'] - res_d['entry']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.