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]

TA貢獻1911條經驗 獲得超7個贊
您可以將兩列相加到新的一列上:
df['new_column']=df['my_time']+df['my_ms_counts']
如果您需要一個帶有時間戳日期的新列,您可以執行以下操作:
df['date'] = pd.to_datetime(df['new_column'],unit='s')

TA貢獻1846條經驗 獲得超7個贊
如果我理解正確的話,my_time
是以秒為單位(自 UNIX 紀元開始以來),并且my_ms_counts
是您希望添加的毫秒數。
如果您想要一個新列將兩者相加,以毫秒為單位(自紀元開始以來),您需要乘以my_time
1000 并添加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
,這些對象可以添加到時間戳中。
添加回答
舉報