如何在python中对列范围求和

Nab*_*zir 2 python dataframe pandas

这是我的数据

df 

No Name     Address    English  History  Math   Physics  Chemistry  Biology
1  Arthur   New York        80       65   100        89         92       94
2  Barthur  New Mexico      70       60    94        83         82       95
Run Code Online (Sandbox Code Playgroud)

我做的是

df['Science'] = df['Math'] + df['Physics'] + df['Chemistry'] + df['Biology']

我的问题是,实际的数据超过900列,我该如何更换df['Math'] + df['Physics'] + df['Chemistry'] + df['Biology'],从总结df['Math']df['Biology'](按范围)

我希望这个问题足够清楚

jez*_*ael 6

我认为您需要iloc按职位选择:

df['sum'] = df.iloc[:, 3:].sum(axis=1)
Run Code Online (Sandbox Code Playgroud)

或者删除不需要的数字列:

df['sum'] = df.drop('No', axis=1).sum(axis=1)
Run Code Online (Sandbox Code Playgroud)
print (df)
   No     Name     Address  English  History  Math  Physics  Chemistry  \
0   1   Arthur    New York       80       65   100       89         92   
1   2  Barthur  New Mexico       70       60    94       83         82   

   Biology  sum  
0       94  520  
1       95  484  
Run Code Online (Sandbox Code Playgroud)

编辑:

如果只需要所有列5到最后:

print (df.iloc[:, 5:])
   Math  Physics  Chemistry  Biology
0   100       89         92       94
1    94       83         82       95

print (df.iloc[:, 3:5])
   English  History
0       80       65
1       70       60

df['A'] = df.iloc[:, 3:5].sum(axis=1)
df['Science'] = df.iloc[:, 5:].sum(axis=1)
print (df)
   No     Name     Address  English  History  Math  Physics  Chemistry  \
0   1   Arthur    New York       80       65   100       89         92   
1   2  Barthur  New Mexico       70       60    94       83         82   

   Biology    A  Science  
0       94  145      520  
1       95  130      484  
Run Code Online (Sandbox Code Playgroud)