У меня много данных, и мне нужно запустить этот код. Это займет много времени, чтобы закончить. Есть ли лучший способ справиться с этим в пандах? Может ли кто-нибудь помочь мне?
Сначала я группирую свой фрейм данных журналов, а затем применяю функцию для каждой группы. В функции у меня есть цикл, который делает некоторое сравнение между значениями группы и состоянием данных. Этот цикл занимает много времени.
history = pd.DataFrame(columns= ['timestamp', 'user_id', 'item','code', 'rew'])
history = logs.groupby(['user_id', 'item_id']).apply(self.find_items, history, states).reset_index(drop=True)
def find_items(self, group, history, states):
for _,ser in group.iterrows():
user_id = ser['user_id']
item = ser['item_id']
timestamp = ser['timestamp']
code = ser['code']
rew = 0
if ~states[(states.user_id == user_id) &
(states.item == item) &
(states.session< timestamp)].empty:
if code == 8:
rew = 0.3
if code == 9:
rew = 0.5
if code == 7:
rew = -0.3
history = history.append({'item': item, 'timestamp': timestamp,'user_id':user_id,'code':code, 'rew': rew}, ignore_index=True)
return history