尝试在 pandas 数据帧中将时间从 30:30 转换为 30.5
Trying to convert time from 30:30 to 30.5 in a pandas dataframe
我正在尝试将我在 netflix 节目中观看的时间转换为浮点数,以便我可以将其加总。我不知道如何转换它。我尝试了很多方法,包括:
temp['Minutes'] = temp['Duration'].apply(lambda x: float(x))
Error: ValueError: could not convert string to float: '00:54:45'
2022-05-18 05:21:42 00:54:45 NaN Ozark: Season 4: Mud (Episode 13) NaN Amazon FTVET31DOVI2020 Smart TV00:54:50 00:54:50 US (United States) Wednesday 2022-05-18
我相信您要做的是将 54 之后的秒数转换为 60 之前的时间百分比。假设您的数据是一致的,这应该会为您提供正在寻找的答案
data = {
'time' : ['00:54:45', '00:05:15', '01:32:00', '00:28:00']
}
df = pd.DataFrame(data)
df['time'] = df['time'].apply(lambda x : ''.join(x.split(':', 1)[1:]))
df['percent'] = df['time'].apply(lambda x : x.split(':')[1])
df['percent'] = (df['percent'].astype(int) / 60) * 100
df['percent'] = df['percent'].astype(int)
df['final'] = df['time'].apply(lambda x : str(x).split(':')[0]) + '.' + df['percent'].astype(str)
df
如果您的目标是将包含字符串的 pd.Series 转换为可以汇总的数据类型,那么使用 pd.Timedeltas 可能会有所帮助。
示例数据:
import pandas as pd
durations = {"Duration": ['00:54:45', '00:05:15', '01:32:00', '00:28:00']}
temp = pd.DataFrame(durations)
将字符串转换为 Timedelta 对象:
time_deltas = pd.to_timedelta(temp["Duration"])
然后可以把time_deltaspd.Series加起来再换算成分钟:
minutes = time_deltas.sum().total_seconds() / 60
minutes # 180.0
如果您想将时间增量添加到现有的 DataFrame 中:
temp["time_deltas"] = pd.to_timedelta(temp["Duration"])
minutes = temp["time_deltas"].sum().total_seconds() / 60
我正在尝试将我在 netflix 节目中观看的时间转换为浮点数,以便我可以将其加总。我不知道如何转换它。我尝试了很多方法,包括:
temp['Minutes'] = temp['Duration'].apply(lambda x: float(x))
Error: ValueError: could not convert string to float: '00:54:45'
2022-05-18 05:21:42 00:54:45 NaN Ozark: Season 4: Mud (Episode 13) NaN Amazon FTVET31DOVI2020 Smart TV00:54:50 00:54:50 US (United States) Wednesday 2022-05-18
我相信您要做的是将 54 之后的秒数转换为 60 之前的时间百分比。假设您的数据是一致的,这应该会为您提供正在寻找的答案
data = {
'time' : ['00:54:45', '00:05:15', '01:32:00', '00:28:00']
}
df = pd.DataFrame(data)
df['time'] = df['time'].apply(lambda x : ''.join(x.split(':', 1)[1:]))
df['percent'] = df['time'].apply(lambda x : x.split(':')[1])
df['percent'] = (df['percent'].astype(int) / 60) * 100
df['percent'] = df['percent'].astype(int)
df['final'] = df['time'].apply(lambda x : str(x).split(':')[0]) + '.' + df['percent'].astype(str)
df
如果您的目标是将包含字符串的 pd.Series 转换为可以汇总的数据类型,那么使用 pd.Timedeltas 可能会有所帮助。
示例数据:
import pandas as pd
durations = {"Duration": ['00:54:45', '00:05:15', '01:32:00', '00:28:00']}
temp = pd.DataFrame(durations)
将字符串转换为 Timedelta 对象:
time_deltas = pd.to_timedelta(temp["Duration"])
然后可以把time_deltaspd.Series加起来再换算成分钟:
minutes = time_deltas.sum().total_seconds() / 60
minutes # 180.0
如果您想将时间增量添加到现有的 DataFrame 中:
temp["time_deltas"] = pd.to_timedelta(temp["Duration"])
minutes = temp["time_deltas"].sum().total_seconds() / 60