簡體   English   中英

在pandas數據幀中一起添加兩個時間列?

[英]Adding two time columns together in pandas dataframe?

我有以下數據:

 time_begin  DRTN_IN_SCND
 16:22:16           439
 16:29:37            53
 16:30:33            85

我想創建一個新列,添加time_begin和DRTN_IN_SCND(以秒為單位的持續時間)來創建新時間。

我試過了:

df['new_time'] = df['time_begin'].apply(lambda x: (dt.datetime.combine(dt.datetime(1,1,1), x,) + dt.timedelta(seconds=df.DRTN_IN_SCND)).time())

這適用於dt.timedelta(seconds = 3)但在我更改為dt.timedelta(seconds = df.DRTN_IN_SCND)時不起作用。 我收到以下錯誤。

TypeError: unsupported type for timedelta seconds component: Series

有誰知道如何解決這個或其他方式來完成我想要做的事情? 謝謝!

如果你想對列進行正確的計算,你必須將DRTN_IN_SCNDtime_begin轉換為時間增量,pandas具有非常方便的to_timedelta

df['DRTN_IN_SCND'] = pd.to_timedelta(df['DRTN_IN_SCND'], unit='s')
df['time_begin'] = pd.to_timedelta(df['time_begin'])
df['new_time'] = df['time_begin'] + df['DRTN_IN_SCND']

這將為您提供新列new_time

   time_begin  DRTN_IN_SCND  new_time
0    16:22:16      00:07:19  16:29:35
1    16:29:37      00:00:53  16:30:30
2    16:30:33      00:01:25  16:31:58

問題

您正在使用df['new_time']上的apply ,這是一個系列,在lambda你指的是df.DRTN_IN_SCND ,這是另一個系列。 因此,錯誤表明您正在嘗試將時間對象添加到系列對象,並且它不知道該怎么做。

相反,請在數據框上使用apply 在這種情況下,lambda函數中的x是串聯的,您可以通過ix訪問每個組件。 這樣做你想要的。

df['new_time'] = df.apply(lambda x: x.ix['time_begin'] + dt.timedelta(seconds=x.ix['DRTN_IN_SCND']), axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM