2015-10-16 3 views
0

я имена столбцов сохраняются в списке:Как суммировать значения в определенных столбцах

col_names = ["Col1","Col5",...] 

Теперь я хочу, чтобы создать новый столбец «Total» и для каждой строки суммировать значение столбцов в col_names ,

Должен ли я использовать для цикла или есть какая-либо функция, выполняющая эту работу?

+0

Адрес этой колонки? – inetphantom

ответ

3

Вы можете использовать список столбцов индекса в dataframe, а затем суммировать по столбцам (ось = 1):

>>> df = pd.DataFrame(np.random.randint(0, 10, (5,5)), columns=["Col{}".format(i) for i in range(1,6)]) 
>>> df 
    Col1 Col2 Col3 Col4 Col5 
0  4  7  3  5  6 
1  2  1  3  7  9 
2  4  7  8  0  1 
3  0  4  1  1  3 
4  5  8  1  5  7 
>>> col_names = ["Col1", "Col5"] 
>>> df[col_names] 
    Col1 Col5 
0  4  6 
1  2  9 
2  4  1 
3  0  3 
4  5  7 
>>> df["Total"] = df[col_names].sum(axis=1) 
>>> df 
    Col1 Col2 Col3 Col4 Col5 Total 
0  4  7  3  5  6  10 
1  2  1  3  7  9  11 
2  4  7  8  0  1  5 
3  0  4  1  1  3  3 
4  5  8  1  5  7  12 
+0

2 минуты, это безумно быстро, я даже не набирал «import pandas as pd» – Anzel

+0

Что такое «ось = 1»? –

+0

@ KlausosKlausos axis = 1 означает только выполнение суммы вдоль столбцов, а ось = 0 вдоль строк – Anzel

0

Пример:

m = [[1,2,3], 
    [4,5,6], 
    [7,8,9], 
    ] 

new_n = []  
for c in m: 
    new_n.append(c + [sum(c)]) 

print new_n 

Выход:

[[1, 2, 3, 6], [4, 5, 6, 15], [7, 8, 9, 24]] 
Смежные вопросы