将循环转换为运行p

2024-04-27 02:58:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉。我通常用R语言写作。 我试着用python把简单的循环写成并行的。我只是卡住了,做不到。如果有人能帮助我,我会很高兴的。你知道吗

我有一连串的事情。在这些事件结束时,Y可以等于1或0。我想把那个数据帧转换成一个长数组。你知道吗

输入:

ID  EventDateTime   Event       Y
147 03:48.8         Completed   0
147 10:28.5         Completed   0
669 58:35.7         Login       1
669 58:48.9         Login       1
669 59:58.2         Login       1
669 00:09.8         Login       1
669 13:01.1         Login       1
669 13:09.5         Login       1
669 31:15.5         Login       1
669 49:19.2         Login       1
669 44:38.6         Login       1
669 44:48.3         Login       1
669 28:51.9         Login       1
669 29:19.4         Login       1
669 33:36.3         Login       1
53  45:05.8         Completed   0
68  02:03.6         LogOut      1
68  05:52.3         Completed   1
68  08:29.4         LogOut      1

输出:

Completed
Completed
Y=0
Login
Login
Login
Login
Login
Login
Login
Login
Login
Login
Login
Login
Login
Y=1
LogOut
Completed
LogOut
Y=1

这是脚本:

PreparationData = np.array([])
for ID in Data['ID'].unique():
    Events=Data.loc[(Data['ID']==str(ID))]
    Events=Events.sort_values(by='EventDateTime',ascending=True)
    if(Events['Y'].unique()==0):
        Event=np.array(Events[['Event']])
        Event=np.append(Event, 'Y=0')
        PreparationData=np.append(PreparationData,Event)
    else:
        Event=np.array(Events[['Event']])
        Event=np.append(Event, 'Y=1')
        PreparationData=np.append(PreparationData,Event)

如果有人知道R和python。下面是我如何在R中编写所需内容:

doSNOW::registerDoSNOW(cl<-snow::makeCluster(4))
PreparationData<-ddply(.data = Data,
                       .variables = "ID",
                       .parallel=TRUE,
                       .fun = function(Events){

                         Events<-Events[order(Events$EventDateTime),]
                         if(unique(Events$Y)<=0){
                           return(data.frame(Events=c(Events$Event,"Y=0")))
                         }else{
                           return(data.frame(Events=c(Events$Event,"Y=1")))
                         }

                       })
snow::stopCluster(cl)

如何与python并行编写? 谢谢。你知道吗


Tags: eventiddataifnplogineventsarray