[英]Pandas : Add 2 time columns and create a new column
我是 Pandas 的新手,想知道這是否可能。
我有兩列,一列是紀元時間,另一列是毫秒數。 我想創建一個第三列,它的時間以毫秒為單位,將這兩個列用作以毫秒為單位的時間列,這樣我就可以輕松地在給定時間之間生成 select 數據幀。 有人可以幫我解決這個問題嗎?
my_time my_ms_counts
1500702208 1
1500702208 2
1500702208 3
1500702208 4
1500702208 5
對於這 2 個,我想要一個時間列。
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]
您可以將兩列加在一個新列上:
df['new_column']=df['my_time']+df['my_ms_counts']
如果您需要一個帶有時間戳日期的新列,您可以執行以下操作:
df['date'] = pd.to_datetime(df['new_column'],unit='s')
如果我理解正確, 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
對象,后者可以添加到時間戳中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.