Pandas: sum up multiple columns into one column without last column

后端 未结 3 1251
悲哀的现实
悲哀的现实 2021-01-30 10:22

If I have a dataframe similar to this one

Apples   Bananas   Grapes   Kiwis
2        3         nan      1
1        3         7        nan
nan      nan       2            


        
相关标签:
3条回答
  • 2021-01-30 10:52

    It is possible to do it without knowing the number of columns and even without iloc:

    print(df)
       Apples  Bananas  Grapes  Kiwis
    0     2.0      3.0     NaN    1.0
    1     1.0      3.0     7.0    NaN
    2     NaN      NaN     2.0    3.0
    
    cols_to_sum = df.columns[ : df.shape[1]-1]
    
    df['Fruit Total'] = df[cols_to_sum].sum(axis=1)
    
    print(df)
       Apples   Bananas Grapes  Kiwis   Fruit Total
    0  2.0      3.0     NaN     1.0     5.0
    1  1.0      3.0     7.0     NaN     11.0
    2  NaN      NaN     2.0     3.0     2.0
    
    0 讨论(0)
  • 2021-01-30 11:02

    You can first select by iloc and then sum:

    df['Fruit Total']= df.iloc[:, -4:-1].sum(axis=1)
    print (df)
       Apples  Bananas  Grapes  Kiwis  Fruit Total
    0     2.0      3.0     NaN    1.0          5.0
    1     1.0      3.0     7.0    NaN         11.0
    2     NaN      NaN     2.0    3.0          2.0
    

    For sum all columns use:

    df['Fruit Total']= df.sum(axis=1)
    
    0 讨论(0)
  • 2021-01-30 11:12

    Using df['Fruit Total']= df.iloc[:, -4:-1].sum(axis=1) over your original df won't add the last column ('Kiwis'), you should use df.iloc[:, -4:] instead to select all columns:

    print(df)
       Apples  Bananas  Grapes  Kiwis
    0     2.0      3.0     NaN    1.0
    1     1.0      3.0     7.0    NaN
    2     NaN      NaN     2.0    3.0
    
    df['Fruit Total']=df.iloc[:,-4:].sum(axis=1)
    
    print(df)
       Apples  Bananas  Grapes  Kiwis  Fruit Total
    0     2.0      3.0     NaN    1.0          6.0
    1     1.0      3.0     7.0    NaN         11.0
    2     NaN      NaN     2.0    3.0          5.0
    
    0 讨论(0)
提交回复
热议问题