Pandas - Сложить все значения в списке ячейки
Есть датафрейм такого вида:
| x | y | z |
|---|---|---|
| [1.0, 2.0] | [5.0, 2.0] | [7.0, 1.0] |
| [2.0, 2.0] | [1.0, 2.0] | [7.0, 1.0] |
Нужно сложить списки в каждой ячейке, т.е. превратить в такой:
| x | y | z |
|---|---|---|
| 3.0 | 7.0 | 8.0 |
| 4.0 | 3.0 | 8.0 |
Как сделать это максимально просто?
Ответы (2 шт):
Автор решения: Step1709
→ Ссылка
Для этого можно воспользоваться методом .apply() для каждого столбца, этот способ самый простой и понятный:
df['x'] = df['x'].apply(lambda x: sum(x))
df['y'] = df['y'].apply(lambda x: sum(x))
df['z'] = df['z'].apply(lambda x: sum(x))
Учтите, что если в столбцах будут элементы не в виде списка, то будет выдавать ошибку. Если столбцов много и вручную делать для каждого столбца долго, то вот вариант, который просуммирует значения во всех столбцах:
cols = df.columns
for col in cols:
df[col] = df[col].apply(lambda x: sum(x))
df
Автор решения: strawdog
→ Ссылка
просто примените applymap:
import pandas as pd
df = pd.DataFrame({"x":[[1.0, 2.0],[2.0, 2.0]], "y":[[5.0, 2.0],[1.0, 2.0]], "z":[[7.0, 1.0], [7.0, 1.0]]})
df = df.applymap(sum)
print(df)
x y z
0 3.0 7.0 8.0
1 4.0 3.0 8.0