亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將一列中的微秒轉換為毫秒,并在熊貓中將另一列的聚合模式轉換為毫秒

如何將一列中的微秒轉換為毫秒,并在熊貓中將另一列的聚合模式轉換為毫秒

一只斗牛犬 2023-04-25 15:21:19
我有一個包含 2 列的 df。一個是以微秒為單位的時間戳,另一個是一個值。它看起來像這樣:         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我想將 df.time 協調到毫秒并按模式聚合 df.score。它應該是這樣的:         time  score        8362      4        8363      5        8364      1       
查看完整描述

3 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

嘗試:


df.groupby(df['time'] // 10)['score'].apply(lambda x: x.mode()[0])

輸出:


time

8362    4

8363    5

8364    1

Name: score, dtype: int64


查看完整回答
反對 回復 2023-04-25
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

首先,轉換時間列,使其包含毫秒。1 微秒包含 0.001 毫秒。因此,此代碼會將您的時間列轉換為毫秒:

df['time'] = df['time'] / 1000

然后,按所需的列分組,在本例中為分數,然后指定您是按模式聚合的時間列。這可以使用以下代碼完成:

df.groupby(['score']).apply(pd.DataFrame.mode).reset_index(drop=True)


查看完整回答
反對 回復 2023-04-25
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

兩種方法:

  1. 使用resample,不過今天才知道,目前還沒有嘗試過,不過看起來很強大。?

  2. 我最喜歡的方法是:

df["milliseconds"]?=?np.round(df["time"]?/?1000,?0)?#?For?cutoff,?consider?//?1000
df?=?df.groupby("milliseconds").agg(score=("score",?"mode")).reset_index()

如果時間緊迫,請考慮使用 .apply() 或列表理解進行毫秒計算。如果您使用 apply 執行此操作,請記住 lambda 函數有開銷。對于非常大的樣本,numpy 可能會稍微快一些。重新采樣可能比分組更快,但這很容易。


查看完整回答
反對 回復 2023-04-25
  • 3 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號