繁体   English   中英

当 dataframe 中的值等于 nan 时,如何将操作更改为其他列?

[英]How to change an operation to other column when value is equal to nan in a dataframe?

我有一个包含三列“dayO”、“dayN”和“dayF”的数据框,我想创建另一个名为“days”的列,只有当 dayN 不等于 nan 时,它才会用 dayO 减去 dayN 的值,否则应该从 dayF 中减去该值。

我尝试过像这样使用 apply 和 lambda :

df['days']=df.apply(lambda x: x['dayN']-x['dayO'] if x['dayN'].notnull() else x['dayF']-x['dayO'])

但它会导致此错误: raise KeyError(key) from err KeyError: 'dayN'

运行时使用fillna将dayN的NaN替换为dayF:

df['days'] = df['dayN'].fillna(df['dayF'])-df['dayO']
dataOpen['days']=np.where(dataOpen.dayN.notnull(),dataOpen['dayN']-dataOpen['dayO'],dataOpen['dayF']-dataOpen['dayO'])

这似乎有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM