Merging and subtracting DataFrame columns in pandas?

后端 未结 3 963
我在风中等你
我在风中等你 2020-12-31 11:38

I have a pandas DataFrame, something like:

col1  col2 col3 col5
NaN    1    2    8
2     NaN   4    8
4     NaN   4    8

I want to do two t

相关标签:
3条回答
  • 2020-12-31 11:54

    To get the new column, you could use fillna (or combine_first):

    df['newcol1'] = df.col1.fillna(df.col2)
    

    Then for the subtraction, use sub and specify axis=0 since we want to consider the row indices when matching up labels (not the column indices as is the default):

    >>> df[['newcol1', 'col3']].sub(df['col5'], axis=0)
       newcol1  col3
    0       -7    -6
    1       -6    -4
    2       -4    -4
    
    0 讨论(0)
  • 2020-12-31 11:56
    In [58]:
    
    df['newcol'] = df[['col1','col2']].sum(axis=1) - df['col5']
    df['col3'] = df['col3'] - df['col5']
    df
    Out[58]:
       col1  col2  col3  col5  newcol
    0   NaN     1    -6     8      -7
    1     2   NaN    -4     8      -6
    2     4   NaN    -4     8      -4
    

    You can then drop col1 and col2:

    In [59]:
    
    df = df.drop(['col1','col2'],axis=1)
    df
    Out[59]:
       col3  col5  newcol
    0    -6     8      -7
    1    -4     8      -6
    2    -4     8      -4
    
    0 讨论(0)
  • 2020-12-31 12:15

    Here's one approach.

    You could create newcol1 by sum(axis=1)

    In [256]: df['newcol1'] = df[['col1', 'col2']].sum(axis=1)
    
    In [257]: df
    Out[257]:
       col1  col2  col3  col5  newcol1
    0   NaN     1     2     8        1
    1     2   NaN     4     8        2
    2     4   NaN     4     8        4
    

    Then use df.sub() on axis=0

    In [258]: df[['newcol1', 'col3']].sub(df['col5'], axis=0)
    Out[258]:
       newcol1  col3
    0       -7    -6
    1       -6    -4
    2       -4    -4
    
    0 讨论(0)
提交回复
热议问题