Pandas:添加 2 个时间列并创建一个新列

我是熊猫新手,想知道这是否可能。


我有两列,一列包含纪元时间,另一列包含毫秒计数。我想创建一个第三列,其时间以毫秒为单位,使用这两个列作为时间以毫秒为单位的单个时间列,以便我可以轻松地在给定时间之间选择数据帧。有人可以帮我解决这个问题吗?


my_time         my_ms_counts

1500702208      1

1500702208      2

1500702208      3

1500702208      4

1500702208      5

对于这两个我想要一个时间列。


明月笑刀无情
浏览 1402回答 3
3回答

杨__羊羊

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现在您可以转换指定的单列mspd.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]

Smart猫小萌

您可以将两列相加到新的一列上: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_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,这些对象可以添加到时间戳中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python