如何使用Python将月、日、时、分格式的时间数据转换为分钟单位
实现方法
方法一:按预设月份天数计算
你之前定义的month_lengths数组逻辑是对的,只需要先计算每个月之前所有月份的累计天数,再和月份列映射换算即可,完整代码修改如下:
# Import packages import pandas as pd # Open data file data_file_name = "data_file.csv" data_file = pd.read_csv(data_file_name, header=2) # Extract DHI solar data solar_data = data_file["DHI"] # Extract time points # Define number of days in each month,闰年请把2月对应值改为29 month_lengths = [0,31,28,31,30,31,30,31,31,30,31,30,31] # 计算前缀和:prefix_days[m]代表前m个月的总天数,比如prefix_days[1]=31(1月总天数) prefix_days = [0] current_total = 0 for days in month_lengths[1:]: current_total += days prefix_days.append(current_total) # 月份对应的贡献分钟数:当前月份之前的总天数 * 1440 month_contribution = data_file["Month"].map(lambda x: prefix_days[x-1]) * 1440 # 总分钟数=月份贡献+日时分贡献 time_data = month_contribution + ((data_file["Day"]-1)*1440) + (data_file["Hour"]*60) + data_file["Minute"]
方法二:自动识别闰年(更推荐)
如果你的数据包含年份列,或者你知道数据对应的具体年份,可以直接用pandas内置的时间转换功能,自动处理闰年,不需要手动维护月份天数:
import pandas as pd data_file_name = "data_file.csv" data_file = pd.read_csv(data_file_name, header=2) solar_data = data_file["DHI"] # 替换下面的2023为你数据实际对应的年份,如果有Year列就改成data_file["Year"] data_file["year"] = 2023 # 拼接为完整时间列 data_file["full_time"] = pd.to_datetime(data_file[["year", "Month", "Day", "Hour", "Minute"]]) # 计算和当年1月1日0点的差值,转为总分钟数 year_start = pd.to_datetime(f"{data_file['year'].iloc[0]}-01-01 00:00:00") time_data = (data_file["full_time"] - year_start).dt.total_seconds() // 60
内容的提问来源于stack exchange,提问作者MUD
相关产品推荐
相关产品推荐

