我最近下载了我的英雄联盟数据。我有以下DF
df = pd.DataFrame.from_dict({'DateTime': {
0: 156102273400,
1: 156101627200,
2: 156092208200,
3: 1559897767000,
4: 1559890046000,
5: 1559889968000},
'EventType': {
0: 'LOGOUT_USER',
1: 'LOGIN',
2: 'LOGOUT_USER',
3: 'LOGIN',
4: 'LOGIN',
5: 'LOGIN'}})
我得到以下 df:
>>>df
Index DateTime EventType
0 156102273400 LOGOUT_USER
1 156101627200 LOGIN
2 156092208200 LOGOUT_USER
3 1559897767000 LOGIN
4 1559890046000 LOGIN
5 1559889968000 LOGIN
我想在遇到下一个 LOGOUT_USER
之前将一个 LOGOUT_USER
映射到最小的 LOGIN
。从那里我应该能够计算出总播放时间。
理想的输出应该是这样的:
>>>fixed_df
Index DateTime EventType
0 156102273400 LOGOUT_USER
1 156101627200 LOGIN
2 156092208200 LOGOUT_USER
3 1559889968000 LOGIN
最佳答案
我认为您正在寻找 groupby
和 idxmin
。
grouper = df['EventType'].ne(df['EventType'].shift()).cumsum()
df.loc[df.groupby(grouper)['DateTime'].idxmin()]
DateTime EventType
0 156102273400 LOGOUT_USER
1 156101627200 LOGIN
2 156092208200 LOGOUT_USER
5 1559889968000 LOGIN
关于python - 计算一对多数据帧中的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56709272/