сумма значений столбцов, начинающихся с той же строки в панде

У меня есть датафрейм с около 100 столбцами, который выглядит как

   Id  Economics-1  English-107  English-2  History-3  Economics-zz  Economics-2  \
0  56          1            1          0        1       0           0   
1  11          0            0          0        0       1           0   
2   6          0            0          1        0       0           1   
3  43          0            0          0        1       0           1   
4  14          0            1          0        0       1           0   

   Histo      Economics-51      Literature-re         Literatureu4  
0           1            0           1                0  
1           0            0           0                1  
2           0            0           0                0  
3           0            1           1                0  
4           1            0           0                0  

поэтому моя цель состоит в том, чтобы оставить только больше глобальных категорий: только английский, история, литература и записать в эти рамки данных сумму значений его компонентов, например, для английского: английский-107, английский-2

    Id  Economics      English    History  Literature  
0  56          1            1          2        1                     
1  11          1            0          0        1                    
2   6          0            1          1        0                     
3  43          2            0          1        1                     
4  14          0            1          1        0          

так что для тех предложений, я верен эти два метода

      first method:

df=pd.read_csv(file_path, sep='\t')
df['History']=df.loc[df[df.columns[pd.Series(df.columns).str.startswith('History')]].sum(axes=1)]

второй метод:

    df=pd.read_csv(file_path, sep='\t')
    filter_col = [col for col in list(df) if col.startswith('History')]
    df['History']=0 #initialize value, otherwise throws KeyError
    for c in df[filter_col]:
    df['History']=df[filter_col].sum(axes=1)
    print df['History', df[filter_col]]

, но оба дают мне ошибку

TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed

Не могли бы вы предложить, как я могу отладить эту ошибку или, возможно, другое решение, для моей проблемы. Пожалуйста, обратите внимание, что у меня есть большой фрейм данных с около 100 столбцами и 400000 строк, поэтому я ищу действительно оптимизированное решение, как сloc в пандах

Ответы на вопрос(2)

Ваш ответ на вопрос