python - 如果某些值是 NaN,我如何对 DataFrame 中的 2 个特定列行求和?
问题描述
我想创建一个新列,Inches_z
. Inches_x
如果和中都有值Inches_y
,我想对这两个特定列中的值求和,并将其作为Inches_z
同一行的结果返回。如果NaN
存在一个值,我想返回不是该值的行NaN
值。如果两个值都是NaN
,我希望结果值也是NaN
。我该怎么做呢?
我有:
Name | Inches_x | Feet | Inches_y
------------------------------------
'Silvers'| 7 | 1 | 2
'Jones' | 7 | 2 | 7
'Jackson'| 4 | NaN | NaN
'Merole' | NaN | 2 | 8
'Kanoff' | NaN | 5 | NaN
'Walker' | NaN | 8 | 0
'Smith' | 8 | 0 | 3
我想:
Name | Inches_x | Feet | Inches_y | Inches_z
-----------------------------------------------
'Silvers'| 7 | 1 | 2 | 9
'Jones' | 7 | 2 | 7 | 14
'Jackson'| 4 | NaN | NaN | 4
'Merole' | NaN | 2 | 8 | 8
'Kanoff' | NaN | 5 | NaN | NaN
'Walker' | NaN | 8 | 0 | 0
'Smith' | 8 | 0 | 3 | 11
解决方案
Sum 和 fillna 与两列
df['z'] = (df['Inches_x'] + df['Inches_y']).fillna(df['Inches_x']).fillna(df['Inches_y'])`
Name Inches_x Feet Inches_y z
0 'Silvers' 7.0 1.0 2.0 9.0
1 'Jones' 7.0 2.0 7.0 14.0
2 'Jackson' 4.0 NaN NaN 4.0
3 'Merole' NaN 2.0 8.0 8.0
4 'Kanoff' NaN 5.0 NaN NaN
5 'Walker' 1.0 8.0 0.0 1.0
6 'Smith' 8.0 0.0 3.0 11.0
推荐阅读
- javascript - 垂直滚动条根据滚动的距离逐位移动
- python - 如何将 CRAFT 语料库中的 XML NER 数据转换为 spaCy 的 JSON 格式?
- marklogic - MarkLogic 中的三元组索引
- python - Tkinter 滚动条仅适用于 create_window
- ios - 将 sender.currentTitle UIButton 文本发送到 PopUpViewController 中的 UILabel,而不是发送到 PopUpViewController
- machine-learning - 用于理解上下文词的自然语言处理技术
- reactjs - 在本机反应中刷新已删除数据的动画
- javascript - 浏览器会话存储何时过期?
- javascript - 如何在离线和在线(在 .NET 中)使用 Web 应用程序
- php - 你如何在php中获取选项标签的数据属性