我有一个 Dataframe df,其列date的格式为'YYYY-mm-dd HH:MM:SS.miliseconds'(datetime 64 [ns])。我想生成另一列minutes(float),作为从时间00:00:00到时间HH:MM:SS的分钟数。如何操作?
df
date
minutes
yhived7q1#
你可以很容易地转换成任何时间单位自午夜
例如:
import pandas as pd df = pd.DataFrame({"datetime": ["2016-01-01 00:00:00", "2016-03-01 12:00:00", "2016-06-01 23:59:00"]}) df["datetime"] = pd.to_datetime(df["datetime"]) # subtract the datetime floored to the day to get a timedelta, df["minutes_from_midnight"] = ( (df["datetime"] - df["datetime"].dt.floor("d")) .dt.total_seconds() # then convert to minutes .div(60) ) df datetime minutes_from_midnight 0 2016-01-01 00:00:00 0.0 1 2016-03-01 12:00:00 720.0 2 2016-06-01 23:59:00 1439.0
wnvonmuf2#
我使用了以下解决方案。首先,我从时间戳(date列)中过滤出小时、分钟和秒:
df['time_hours'] = df.date.dt.hour df['time_minutes'] = df.date.dt.minute df['time_seconds'] = df.date.dt.second
然后,我定义了一个函数来计算总时间(分钟),使用简单的代数:
def get_total_minutes(row): time_hours = row['time_hours'] time_minutes = row['time_minutes'] time_seconds = row['time_seconds'] total_minutes = float((time_hours*60)+(time_minutes)+(time_seconds/60)) return total_minutes
最后,我将该函数应用于每一行,并得到了预期的结果:
df['minutes'] = df.apply(lambda row: get_total_minutes(row), axis=1)
2条答案
按热度按时间yhived7q1#
你可以很容易地转换成任何时间单位自午夜
例如:
wnvonmuf2#
我使用了以下解决方案。首先,我从时间戳(
date
列)中过滤出小时、分钟和秒:然后,我定义了一个函数来计算总时间(分钟),使用简单的代数:
最后,我将该函数应用于每一行,并得到了预期的结果: