У меня есть простой фрейм данных df со столбцом списков lists
.Я хотел бы создать дополнительный столбец на основе lists
.
. df
выглядит так:
import pandas as pd
lists={1:[[1]],2:[[1,2,3]],3:[[2,9,7,9]],4:[[2,7,3,5]]}
#create test dataframe
df=pd.DataFrame.from_dict(lists,orient='index')
df=df.rename(columns={0:'lists'})
df
lists
1 [1]
2 [1, 2, 3]
3 [2, 9, 7, 9]
4 [2, 7, 3, 5]
Я бы хотел, чтобы df
выглядело так:
df
Out[9]:
lists rolllists
1 [1] [1]
2 [1, 2, 3] [1, 1, 2, 3]
3 [2, 9, 7, 9] [1, 2, 3, 2, 9, 7, 9]
4 [2, 7, 3, 5] [2, 9, 7, 9, 2, 7, 3, 5]
По сути, я хочу суммировать / 1013 * 2 скользящих списка.Обратите внимание, что в строке 1, потому что у меня есть только 1 список 1 , это список роликов.Но в строке 2 у меня есть 2 списка, которые я хочу добавить.Затем для третьей строки добавьте df[2].lists
и df[3].lists
и т. Д. Я работал над подобными вещами ранее, ссылаясь на это: Pandas Dataframe, Столбец списков, Создать столбец наборов совокупных списков и запись по различиям записей .
Кроме того, если мы можем получить эту часть выше, то я хочу сделать это в groupby
(так, например, в приведенном ниже примере будет 1 группа, например, например, df
может выглядеть следующим образомэто в groupby
):
Group lists rolllists
1 A [1] [1]
2 A [1, 2, 3] [1, 1, 2, 3]
3 A [2, 9, 7, 9] [1, 2, 3, 2, 9, 7, 9]
4 A [2, 7, 3, 5] [2, 9, 7, 9, 2, 7, 3, 5]
5 B [1] [1]
6 B [1, 2, 3] [1, 1, 2, 3]
7 B [2, 9, 7, 9] [1, 2, 3, 2, 9, 7, 9]
8 B [2, 7, 3, 5] [2, 9, 7, 9, 2, 7, 3, 5]
Я пробовал разные вещи, такие как df.lists.rolling (2) .sum (), и я получаю эту ошибку:
TypeError: cannot handle this type -> object
в Pandas 0.24.1 и unfortunatley в Pandas 0.22.0 команда не выдает ошибку, а вместо этого возвращает те же значения, что и в lists
.Похоже, более новые версии Pandas не могут суммировать списки?Это второстепенная проблема.
Любите любую помощь!Веселитесь!