Python 熊猫,求一行中特定细胞范围的总和

Python 熊猫,求一行中特定细胞范围的总和,python,pandas,dataframe,Python,Pandas,Dataframe,具有以下字符串的数据帧: key 0 1-9 10-18 19-27 28-36 37-45 46-54 55-63 64-72 73-81 82-90 91-99 100 1 A 1 2 1 4 1 1 1 7 1 3 1 1 1 2 B 3 1 1 1 6 1 1 1 7 1 8 1 1 3 C

具有以下字符串的数据帧:

  key  0 1-9 10-18 19-27 28-36 37-45 46-54 55-63 64-72 73-81 82-90 91-99 100
1   A  1   2     1     4     1     1     1     7     1     3     1     1   1
2   B  3   1     1     1     6     1     1     1     7     1     8     1   1
3   C  1   1     2     1     1     1     1     1     1     1     1     1   1
我想得到一个特定行的单元格总数,例如,对于第一行(键a),结果应该是25(1+2+1+4+1+1+1+7+1+3+1+1+1+1)


如何解决此问题?

如果
键中的值是唯一的,需要按标签选择:

print (df)
  key  0  1-9  10-18  19-27  28-36  37-45  46-54  55-63  64-72  73-81  82-90  \
1   A  1    2      1      4      1      1      1      7      1      3      1   
2   A  3    1      1      1      6      1      1      1      7      1      8   
3   C  1    1      2      1      1      1      1      1      1      1      1   

   91-99  100  
1      1    1  
2      1    1  
3      1    1  
按列创建索引
key
by,然后选择by:

或者先创建
索引
,然后创建
总和
,最后选择或:

或先过滤后求和:

#filtering create one row DataFrame
print (df[df['key'] == 'A'])
  key  0  1-9  10-18  19-27  28-36  37-45  46-54  55-63  64-72  73-81  82-90  \
1   A  1    2      1      4      1      1      1      7      1      3      1   

   91-99  100  
1      1    1  


out = df[df['key'] == 'A'].sum(axis=1).item()

如果
中的值应重复
并且需要按标签选择:

print (df)
  key  0  1-9  10-18  19-27  28-36  37-45  46-54  55-63  64-72  73-81  82-90  \
1   A  1    2      1      4      1      1      1      7      1      3      1   
2   A  3    1      1      1      6      1      1      1      7      1      8   
3   C  1    1      2      1      1      1      1      1      1      1      1   

   91-99  100  
1      1    1  
2      1    1  
3      1    1  
首先可以通过将过滤后的值转换为numpy数组,然后将
2d数组的
sum
转换为numpy数组:

out = df.set_index('key').loc['A'].values.sum()
sum
-第一个
sum
创建
系列
和第二个
sum
返回标量:

out = df.set_index('key').loc['A'].sum().sum()
out = df.set_index('key').sum(axis=1).at['A'].sum()
如果需要,按职位选择

  key  0 1-9 10-18 19-27 28-36 37-45 46-54 55-63 64-72 73-81 82-90 91-99 100
1   A  1   2     1     4     1     1     1     7     1     3     1     1   1
2   B  3   1     1     1     6     1     1     1     7     1     8     1   1
3   C  1   1     2     1     1     1     1     1     1     1     1     1   1
使用或:

out = df.set_index('key').iloc[0].sum()

out = df.set_index('key').sum(axis=1).iat[0]
out = df.set_index('key').sum(axis=1).iloc[0]