Есть ли лучший подход в пандах вместо использования для циклов в этом примере? - PullRequest
0 голосов
/ 29 октября 2019

У меня много данных, и мне нужно запустить этот код. Это займет много времени, чтобы закончить. Есть ли лучший способ справиться с этим в пандах? Может ли кто-нибудь помочь мне?

Сначала я группирую свой фрейм данных журналов, а затем применяю функцию для каждой группы. В функции у меня есть цикл, который делает некоторое сравнение между значениями группы и состоянием данных. Этот цикл занимает много времени.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...