这是一个较大项目的一部分,但我已将问题分解为步骤,所以这是第一步。拿一个Pandas数据框,如下:
index | user time
---------------------
0 F 0
1 T 0
2 T 0
3 T 1
4 B 1
5 K 2
6 J 2
7 T 3
8 J 4
9 B 4
对于每个唯一身份用户,我是否可以在列"时间,"中提取值之间的差异。但有一些条件?
因此,例如,有两个用户J的实例," time"这两个实例之间的差异是2.我可以提取这两行之间的差异吗?然后,如果该用户再次出现,请在数据框中提取该行与该用户之前的外观之间的差异吗?
答案 0 :(得分:4)
我认为需要DataFrameGroupBy.diff
:
df['new'] = df.groupby('user')['time'].diff()
print (df)
user time new
0 F 0 NaN
1 T 0 NaN
2 T 0 0.0
3 T 1 1.0
4 B 1 NaN
5 K 2 NaN
6 J 2 NaN
7 T 3 2.0
8 J 4 2.0
9 B 4 3.0
答案 1 :(得分:0)
我认为np.where
和pandas shifts
会这样做
这两个连续时间之间相减,只有当用户相同时
df1 = np.where (df['users'] == df['users'].shifts(-1), df['time'] - df['time'].shifts(-1), 'NaN')