【发布时间】:2018-12-09 03:37:21
【问题描述】:
所以,我想知道如何根据条件划分列。我的想法是研究用户的活动,但为此我需要设置一个条件。 我有数据框:
df = pd.DataFrame({'User': ["juan","juan","juan","juan","petter","petter","petter","petter","petter","petter","petter","petter","ana","ana","ana","ana","raul","raul","raul","raul"],
'time': ["2/1/2019","3/1/2019","4/1/2019","6/1/2019","2/1/2019","5/1/2019","6/1/2019","10/1/2019","11/1/2019","12/1/2019","13/1/2019","14/1/2019","8/1/2019","10/1/2019","15/1/2019","20/1/2019","15/1/2019","17/1/2019","18/1/2019","19/1/2019"],
'activity': ["fly", "hotel","car","jump","fly", "hotel","jump","car","fly", "car","hotel","car","car", "hotl","car","hotel","fly", "hotel","car","car"],
'%timeper_user': ["4 days","4 days","4 days","4 days","8 days","8 days","8 days","8 days","3 days","3 days","3 days","3 days","12 days","12 days","12 days","12 days","4 days","4 days","4 days","4 days"]})
如您所见,每个用户都有一个列(时间),每个用户还有一个列(%timeper_user)。然后是一个列(活动),它是每个用户在一段时间内执行的活动。这个想法是对不同列中的每个活动进行“条件拆分”。第一幕,第二幕,第三幕,第三幕。但是当用户在时间之外(time +% timeper_user)执行活动时,将活动放在不同的列中,例如:Act21,Act 22,Act 23,Act24 我希望它是这样的:
df2 = pd.DataFrame({'User': ["juan","petter","ana","raul"],
"act1":["fly","fly","car","fly"],
"act2":["hotel","hotel","hotel","hotel"],
"act3":["car","jump","car","car"],
"act4":["jump","car","hotel","car"],
"actn":["","","",""],
"act21":["","fly","",""],
"act22":["","car","",""],
"act23":["","hotel","",""],
"act24":["","car","",""]})
(DF2) 是我想要的输出 见用户 Petter 超出时间(2/1/2019 + 8 天)= 10/1/2019。因此,从 2019 年 11 月 1 日起,活动将放在 Act21、Act22、Act23、Act24 中。 我有很多用户,所以我不知道如何执行一个执行此操作并获取所有内容的功能(逐个用户)。如果你能帮助我,我将不胜感激。谢谢
【问题讨论】:
-
欢迎来到 SO,您能否在您的帖子中也发布示例预期输出。
-
@RavinderSingh13 抱歉,如果我解释得不好。但是我发布了它,DF是我拥有的数据。第二种情况(DF2)是我想要的输出
-
是否正确,如果满足这两个条件,该活动应出现在 Act21、Act22 等中:1) 给定用户在过去执行此活动 2)
time重复活动更大之前活动的time+ 之前活动的timeper_user? -
@AlexeyMilogradov 是的
标签: python database python-3.x pandas split