3 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
嘗試:
df.groupby(df['time'] // 10)['score'].apply(lambda x: x.mode()[0])
輸出:
time
8362 4
8363 5
8364 1
Name: score, dtype: int64

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先,轉(zhuǎn)換時(shí)間列,使其包含毫秒。1 微秒包含 0.001 毫秒。因此,此代碼會(huì)將您的時(shí)間列轉(zhuǎn)換為毫秒:
df['time'] = df['time'] / 1000
然后,按所需的列分組,在本例中為分?jǐn)?shù),然后指定您是按模式聚合的時(shí)間列。這可以使用以下代碼完成:
df.groupby(['score']).apply(pd.DataFrame.mode).reset_index(drop=True)

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
兩種方法:
使用resample,不過今天才知道,目前還沒有嘗試過,不過看起來很強(qiáng)大。?
我最喜歡的方法是:
df["milliseconds"]?=?np.round(df["time"]?/?1000,?0)?#?For?cutoff,?consider?//?1000 df?=?df.groupby("milliseconds").agg(score=("score",?"mode")).reset_index()
如果時(shí)間緊迫,請(qǐng)考慮使用 .apply() 或列表理解進(jìn)行毫秒計(jì)算。如果您使用 apply 執(zhí)行此操作,請(qǐng)記住 lambda 函數(shù)有開銷。對(duì)于非常大的樣本,numpy 可能會(huì)稍微快一些。重新采樣可能比分組更快,但這很容易。
添加回答
舉報(bào)