Кадр данных Pandas с объединенным столбцом

У меня есть кадр данных Pandas, который выглядит как код ниже. Мне нужно добавить динамический столбец, который объединяет каждое значение в последовательности перед заданной строкой. Цикл звучит как логическое решение, но он был бы супер неэффективен для очень большого фрейма данных (более 1 млн строк).

user_id=[1,1,1,1,2,2,2,3,3,3,3,3]
variable=["A","B","C","D","A","B","C","A","B","C","D","E"]
sequence=[0,1,2,3,0,1,2,0,1,2,3,4]
df=pd.DataFrame(list(zip(ID,variable,sequence)),columns =['User_ID', 'Variables','Seq'])

# Need to add a column dynamically 
df['dynamic_column']=["A","AB","ABC","ABCD","A","AB","ABC","A","AB","ABC","ABCD","ABCDE"]

Мне нужно иметь возможность эффективно создавать динамический столбец на основе user_id и порядкового номера. Я играл с функцией сдвига панд, и это просто приводит к необходимости создавать цикл. Ищете простой и эффективный способ создания этого динамического объединенного столбца.


person Droid    schedule 01.10.2019    source источник
comment
О какой данной последовательности вы говорите?   -  person Celius Stingher    schedule 01.10.2019


Ответы (2)


Это cumsum:

df['dynamic_column'] = df.groupby('User_ID').Variables.apply(lambda x: x.cumsum())

Выход:

0         A
1        AB
2       ABC
3      ABCD
4         A
5        AB
6       ABC
7         A
8        AB
9       ABC
10     ABCD
11    ABCDE
Name: Variables, dtype: object
person Quang Hoang    schedule 01.10.2019
comment
Спасибо, это идеально и очень быстро. - person Droid; 01.10.2019

Ваш вопрос немного расплывчатый, но будет ли что-то подобное работать?

df['DynamicColumn'] = df['user_id'] + df['sequencenumber']
person jamzsabb    schedule 01.10.2019
comment
Сомневаюсь, что это то, что он ищет. - person Celius Stingher; 01.10.2019
comment
Приведенный выше ответ дал мне то, что мне было нужно - person Droid; 01.10.2019