Объекты 'Series' являются изменяемыми, поэтому их нельзя хэшировать, пытаясь суммировать столбцы, и тип данных float - PullRequest
1 голос
/ 05 апреля 2020

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

day3prep['D3counts'] = day3prep.sum(day3prep.iloc[:, 2:].sum(axis=1))

формат данных форматируется как:

ID G1  Z1  Z2 ...ZN
0  50  13  12 ...62
1  51  62  23 ...19

dataframe with summed column:
ID G1  Z1  Z2 ...ZN D3counts
0  50  13  12 ...62 sum(Z1:ZN in row 0)
1  51  62  23 ...19 sum(Z1:ZN in row 1)

I изменились в NaNs на 0. тип данных float, но я получаю сообщение об ошибке:

'Series' objects are mutable, thus they cannot be hashed

1 Ответ

0 голосов
/ 05 апреля 2020

Вам нужна только эта часть:

day3prep['D3counts'] = day3prep.iloc[:, 2:].sum(axis=1)

С некоторыми случайными числами:

import pandas as pd
import random

random.seed(42)
day3prep = pd.DataFrame({'ID': random.sample(range(10), 5), 'G1': random.sample(range(10), 5),
    'Z1': random.sample(range(10), 5), 'Z2': random.sample(range(10), 5), 'Z3': random.sample(range(10), 5)})

day3prep['D3counts'] = day3prep.iloc[:, 2:].sum(axis=1)

Вывод:

> day3prep


    ID  G1  Z1  Z2  Z3  D3counts
0   1   2   0   8   8        16
1   0   1   9   0   6        15
2   4   8   1   3   3         7
3   9   4   7   5   7        19
4   6   3   6   6   4        16
...