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]