【问题标题】:Pandas Summing Two Columns with NanPandas 用 Nan 将两列相加
【发布时间】:2018-11-25 07:14:50
【问题描述】:

我在带有 Nan 的 pandas 数据框中有三列:

>>> d=pd.DataFrame({'col1': [1, 2], 'col2': [3, 4], 'col3':[5,6]})
>>> d
   col1  col2  col3
0     1     3     5
1     2     4     6
>>> d['col2'].iloc[0]=np.nan
>>> d
   col1  col2  col3
0     1   NaN     5
1     2   4.0     6
>>> d['col1'].iloc[1]=np.nan
>>> d
   col1  col2  col3
0   1.0   NaN     5
1   NaN   4.0     6
>>> d['col3'].iloc[1]=np.nan
>>> d
   col1  col2  col3
0   1.0   NaN   5.0
1   NaN   4.0   NaN

现在,我希望添加的列具有以下输出:

>>> d['col1']+d['col3']
0    6.0
1    NaN

>>> d['col1']+d['col2']
0   1.0
1   4.0

然而,实际上,输出是:

>>> d['col1']+d['col3']
0    6.0
1    NaN

>>> d['col1']+d['col2']
0   NaN
1   NaN

有谁知道如何做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用add 来获取您的总和,使用fill_value=0

    >>> d.col1.add(d.col2, fill_value=0)
    0    1.0
    1    4.0
    dtype: float64
    
    >>> d.col1.add(d.col3, fill_value=0)
    0    6.0
    1    NaN
    dtype: float64
    

    【讨论】:

      【解决方案2】:

      添加第一列和第二列时,使用Series.addfill_value=0

      >>> d
         col1  col2  col3
      0   1.0   NaN   5.0
      1   NaN   4.0   NaN
      >>> 
      >>> d['col1'].add(d['col2'], fill_value=0)
      0    1.0
      1    4.0
      dtype: float64
      

      数据帧和系列具有 addsub、... 等方法,以便执行比相关运算符 +-、... 所能提供的更复杂的操作。

      这些方法可能需要额外的参数来微调操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-28
        • 2017-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 2021-01-03
        • 2014-12-01
        • 2021-09-24
        相关资源
        最近更新 更多