Python 如何将一列中的微秒转换为毫秒,并将另一列的聚合模式转换为毫秒
我有一个有两列的df。一个是以微秒为单位的时间戳,另一个是值。看起来是这样的:Python 如何将一列中的微秒转换为毫秒,并将另一列的聚合模式转换为毫秒,python,pandas,Python,Pandas,我有一个有两列的df。一个是以微秒为单位的时间戳,另一个是值。看起来是这样的: time score 83620 4 83621 4 83622 4 83623 4 83624 4 83625 4 83626 4 83627 4 83628 4
time score
83620 4
83621 4
83622 4
83623 4
83624 4
83625 4
83626 4
83627 4
83628 4
83629 4
83630 4
83631 4
83632 4
83633 5
83634 5
83635 5
83636 5
83637 5
83638 5
83639 6
83640 1
83641 1
83642 4
time score
8362 4
8363 5
8364 1
我想将df.time调整为毫秒,并按模式聚合df.score。应该是这样的:
time score
83620 4
83621 4
83622 4
83623 4
83624 4
83625 4
83626 4
83627 4
83628 4
83629 4
83630 4
83631 4
83632 4
83633 5
83634 5
83635 5
83636 5
83637 5
83638 5
83639 6
83640 1
83641 1
83642 4
time score
8362 4
8363 5
8364 1
尝试:
输出:
time
8362 4
8363 5
8364 1
Name: score, dtype: int64
两种方法:
如果时间紧迫,请考虑用Apple()或列表理解进行毫秒计算。如果使用apply,请记住lambda函数有开销。 对于非常大的样本,numpy可能会稍微快一点。
重采样可能比分组快,但这很容易。首先,转换时间列,使其包含毫秒。1微秒包含0.001毫秒。因此,此代码将时间列转换为毫秒:
df['time'] = df['time'] / 1000
然后,按所需列分组,在本例中为score,然后指定按模式聚合时间列。这可以使用以下代码完成:
df.groupby(['score']).apply(pd.DataFrame.mode).reset_index(drop=True)
将micro转换为mili意味着删除三位数,而不是一位数。除以/1000