#python #pandas #dataframe
Вопрос:
У меня есть фрейм данных:
data = {'process': ['buying','selling','searhicng','repairing', 'preparing', 'selling','buying', 'searching', 'selling','searching'],
'type': ['in_progress','in_progress','end','in_progress', 'end', 'in_progress','in_progress', 'end', 'in_progress','end'],
'country': ['usa','usa', 'usa','ghana', 'ghana','ghana','ghana', 'ghana', 'albania','albania'],
'id': ['022','022','022', '011','011', '011','011', '011', '6','6'],
'created': ['2021-07-01','2021-07-02','2021-07-03','2021-07-04','2021-07-05','2021-07-06','2021-07-07','2021-07-08','2021-07-09','2021-07-10']
}
df = pd.DataFrame(data, columns = ['process','type','country', 'id','created'])
Мне нужно использовать cumsum в функции apply. После использования df.groupby('country').apply(lambda x:(x['type']!=x['type'].shift()).cumsum()).reset_index()
я получаю такой фрейм данных
Но мне нужно получить другой кадр данных, может ли кто-нибудь увидеть проблему? Результат вывода Pandas версии ‘0.25.3’ :
Комментарии:
1. Я управляю им сам и получаю исключительно то, что вы хотели.
2. @Aryerez и почему я добавил свою версию для панд. Я не могу обновить его
Ответ №1:
Использование IIUC:
df['new'] = df.groupby('country')['type'].apply(lambda x:(x!=x.shift()).cumsum())
print (df)
process type country id created new
0 buying in_progress usa 022 2021-07-01 1
1 selling in_progress usa 022 2021-07-02 1
2 searhicng end usa 022 2021-07-03 2
3 repairing in_progress ghana 011 2021-07-04 1
4 preparing end ghana 011 2021-07-05 2
5 selling in_progress ghana 011 2021-07-06 3
6 buying in_progress ghana 011 2021-07-07 3
7 searching end ghana 011 2021-07-08 4
8 selling in_progress albania 6 2021-07-09 1
9 searching end albania 6 2021-07-10 2