假设我有一个包含2列的数据框,第1列包含工作,家庭,睡眠等活动,第2列是每个活动的持续时间。
在迭代行时,我想找出“睡眠”的最后一次活动的持续时间。在我目前的活动期间。
有一种简单的方法吗?
我的数据:
duration = np.random.randint(20, size = 30)
activities = ['work', 'home', 'sleep', 'home','work', 'sleep','work', 'home','sleep', 'home','work', 'sleep','work', 'home','work', 'sleep','work', 'home','work', 'sleep','work', 'home','work', 'sleep','work', 'home','work', 'home', 'work', 'sleep']
activity_df = pd.DataFrame({'activities':activities, 'duration':duration})
答案 0 :(得分:1)
我认为需要先按boolean indexing
进行过滤,然后按name
选择最后一个值:
iloc
或按条件使用where
创建print (activity_df.loc[activity_df['activities'] == 'sleep', 'duration'].iloc[-1])
,按NaN
使用最后前置替换值:
ffill
答案 1 :(得分:1)
你也可以尝试这个,它有点类似于jezrael的答案。
activity_df[activity_df['activities'] == 'sleep']['duration'].iloc[-1]