Суммировать числа в списке в DataFrame - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь суммировать числа в списке в DataFrame.Аргумент TypeError(int()) должен быть строкой, байтовоподобным объектом или числом, а не «списком») с использованием метода sum(), и я не могу найти лучшего способа сделать это.

Вот мой DataFrame:

    movie_id    user_id rating  title
0   1   [1, 2, 5]   [5, 4, 4]   [Toy Story (1995), Toy Story (1995), Toy Story...
1   2   [1, 5]  [3, 3]  [GoldenEye (1995), GoldenEye (1995)]
2   3   [1] [4] [Four Rooms (1995)]
3   4   [1] [3] [Get Shorty (1995)]
4   5   [1] [3] [Copycat (1995)]
5   6   [1] [5] [Shanghai Triad (Yao a yao yao dao waipo qiao)...
6   7   [1] [4] [Twelve Monkeys (1995)]
7   8   [1] [1] [Babe (1995)]
8   9   [1] [5] [Dead Man Walking (1995)]

Я хочу суммировать числа в каждом списке столбца «рейтинг» и добавить столбец, показывающий сумму для каждой строки.Например: [5, 4, 4] => 13, [3, 3] => 6 и т.д ...

Вот краткий обзор моего кода:

s = df.loc[0:0, 'rating'].tolist()

вывод: [[5, 4, 4]]

Пока я пробовал:

s = sum(int(i) for i in s)
s

, но это привело к ошибке TypeError.

Я думаю, если бы я мог превратить вывод s в список, такой как [5, 4, 4], это решило бы проблему, или естьлучшие способы сделать?

И, так как я могу только суммировать строки за раз, есть ли способ суммировать список каждой строки сразу?

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Вы можете сделать следующее:

df['rating'].apply(sum)
Out:
6
13
4
..
type: Object

- применяет функцию sum к каждой строке в столбце 'rating'.

Вы можете назначить его на df:

df['sum_rating'] = df['rating'].apply(sum)
0 голосов
/ 27 января 2019

Вы можете передать sum на Series.map:

df = pd.DataFrame({'ratings': [[1, 2], [4, 5]]})
df['sums'] = df['ratings'].map(sum)
print(df)
#    ratings  sums
#  0  [1, 2]     3
#  1  [4, 5]     9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...