Если значения в key
являются уникальными и должны быть выбраны по метке:
Создать индекс по столбцу key
по set_index
, затем выбрать по DataFrame.loc
:
#select return Series
print (df.set_index('key').loc['A'])
0 1
1-9 2
10-18 1
19-27 4
28-36 1
37-45 1
46-54 1
55-63 7
64-72 1
73-81 3
82-90 1
91-99 1
100 1
Name: A, dtype: int64
out = df.set_index('key').loc['A'].sum()
Или сначала создайте index
, затем sum
, а затем выберите Series.at
или Series.loc
:
#sum return Series
print (df.set_index('key').sum(axis=1))
key
A 25
B 33
C 14
dtype: int64
out = df.set_index('key').sum(axis=1).at['A']
out = df.set_index('key').sum(axis=1)['A']
out = df.set_index('key').sum(axis=1).loc['A']
Или отфильтруйте сначала по boolean indexing
, а затем sum
:
#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()
Если значения в key
должны дублироваться и должны быть выбраны по метке:
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 на values
, а затем sum
из 2d array
:
out = df.set_index('key').loc['A'].values.sum()
Double sum
- первый sum
create Series
и второй sum
return scalar:
out = df.set_index('key').loc['A'].sum().sum()
out = df.set_index('key').sum(axis=1).at['A'].sum()
При необходимости выберите по позициям :
Используйте DataFrame.iloc
или Series.iat
, Series.iloc
:
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]