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

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

Pandas:添加 2 個時間列并創建一個新列

Pandas:添加 2 個時間列并創建一個新列

明月笑刀無情 2023-08-22 16:37:59
我是熊貓新手,想知道這是否可能。我有兩列,一列包含紀元時間,另一列包含毫秒計數。我想創建一個第三列,其時間以毫秒為單位,使用這兩個列作為時間以毫秒為單位的單個時間列,以便我可以輕松地在給定時間之間選擇數據幀。有人可以幫我解決這個問題嗎?my_time         my_ms_counts1500702208      11500702208      21500702208      31500702208      41500702208      5對于這兩個我想要一個時間列。
查看完整描述

3 回答

?
楊__羊羊

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

pd.to_datetime會將您的紀元時間轉換為日期(指定秒為單位),然后用于pd.to_timedelta添加毫秒。


df['datetime'] = (pd.to_datetime(df['my_time'], unit='s') 

                  + pd.to_timedelta(df['my_ms_counts'], unit='ms'))


#      my_time  my_ms_counts                datetime

#0  1500702208             1 2017-07-22 05:43:28.001

#1  1500702208             2 2017-07-22 05:43:28.002

#2  1500702208             3 2017-07-22 05:43:28.003

#3  1500702208             4 2017-07-22 05:43:28.004

#4  1500702208             5 2017-07-22 05:43:28.005

或者,您可以在轉換為類似單位后合并兩列。選擇較小的單位 ,ms以避免float64表示不完美的問題。


df['full_time_ms'] = df['my_time']*1000 + df['my_ms_counts']


#      my_time  my_ms_counts                datetime   full_time_ms

#0  1500702208             1 2017-07-22 05:43:28.001  1500702208001

#1  1500702208             2 2017-07-22 05:43:28.002  1500702208002

#2  1500702208             3 2017-07-22 05:43:28.003  1500702208003

#3  1500702208             4 2017-07-22 05:43:28.004  1500702208004

#4  1500702208             5 2017-07-22 05:43:28.005  1500702208005

現在您可以轉換指定的單列ms


pd.to_datetime(df['full_time_ms'], unit='ms')


#0   2017-07-22 05:43:28.001

#1   2017-07-22 05:43:28.002

#2   2017-07-22 05:43:28.003

#3   2017-07-22 05:43:28.004

#4   2017-07-22 05:43:28.005

#Name: full_time_ms, dtype: datetime64[ns]


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

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

您可以將兩列相加到新的一列上:

df['new_column']=df['my_time']+df['my_ms_counts']

如果您需要一個帶有時間戳日期的新列,您可以執行以下操作:

df['date'] = pd.to_datetime(df['new_column'],unit='s')


查看完整回答
反對 回復 2023-08-22
?
喵喵時光機

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

如果我理解正確的話,my_time是以秒為單位(自 UNIX 紀元開始以來),并且my_ms_counts是您希望添加的毫秒數。

如果您想要一個新列將兩者相加,以毫秒為單位(自紀元開始以來),您需要乘以my_time1000 并添加my_ms_counts

這可以解決問題:

df["ms"] = 1000 * df["my_time"] + df["my_ms_counts"]

就像這樣:

df["ms"] = df.my_time.mul(1000).add(df.my_ms_counts)

(如果您更喜歡方法鏈)

但是,如果我是你,我會花一些時間研究pandas對日期時間操作的支持。這將使您的應用程序更容易使用。您可以首先將列解析為pandas.Timestamp對象。您想要的具體操作可以通過以下方式實現:

df["new_dt_col"] = (
      pd.to_datetime(df.my_time, unit='s')
    + pd.to_timedelta(data.my_ms_counts, unit="ms")
)

請注意它如何將my_time列解析為Timestamp對象和my_ms_counts對象Timedelta,這些對象可以添加到時間戳中。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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