You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Datetime格式统一与自定义规则自动生成日期列的技术解决方案咨询

Datetime格式统一与自定义规则自动生成日期列的技术解决方案咨询

首先,咱们先理清你遇到的两个核心问题:一是现有Datetime列存在格式混杂(部分是YYYY-MM-DD,部分是YYYY-DD-MM)导致解析混乱;二是想要基于指定初始时间,按照自定义的秒数规则(x秒后变更日期、y秒后变更月份)生成统一格式的新日期列。下面我分两部分给你具体的解决思路和代码示例:

一、统一现有Datetime列的格式

你的数据里同时混着两种日期格式,直接用默认解析会出错,咱们可以分别尝试两种格式解析,再合并正确的结果:

import pandas as pd

# 假设你的原始DataFrame名为df
# 第一步:尝试按YYYY-MM-DD HH:MM:SS解析,解析失败的会返回NaN
df['parsed_mdy'] = pd.to_datetime(df['Datetime'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
# 第二步:尝试按YYYY-DD-MM HH:MM:SS解析,同样失败的返回NaN
df['parsed_dmy'] = pd.to_datetime(df['Datetime'], format='%Y-%d-%m %H:%M:%S', errors='coerce')
# 第三步:合并两个解析结果,取非空值作为统一后的datetime列
df['datetime_unified'] = df['parsed_mdy'].combine_first(df['parsed_dmy'])
# 清理临时列
df.drop(['parsed_mdy', 'parsed_dmy'], axis=1, inplace=True)

# 如果需要转换成字符串格式输出,执行下面的代码
df['datetime_unified_str'] = df['datetime_unified'].dt.strftime('%Y-%m-%d %H:%M:%S')

这样处理后,所有日期都会被正确解析为pandas的datetime类型,后续可以轻松统一成你需要的格式。

二、基于初始时间自定义规则生成新日期列

你提到要从2022-09-06 12:33:40开始,按10秒步长生成100万行数据,同时按自定义的x/y秒规则变更日和月。这里我假设你需要的是累计经过x秒就加1天,累计经过y秒就加1月的规则,代码示例如下:

import pandas as pd
import numpy as np

# 初始时间
initial_time = pd.to_datetime('2022-09-06 12:33:40')
# 总行数和步长
total_rows = 1000000
step_sec = 10

# 生成每行对应的累计秒数
cumulative_sec = np.arange(0, total_rows * step_sec, step_sec)

# 自定义x和y的值,比如x=86400(1天的秒数),y=2592000(30天的秒数),你可以按需修改
x = 86400  # 每累计x秒,日期加1天
y = 2592000  # 每累计y秒,月份加1月

# 计算日偏移和月偏移的次数
day_offsets = cumulative_sec // x
month_offsets = cumulative_sec // y

# 生成自定义时间序列:初始时间 + 月偏移 + 日偏移 + 累计秒数偏移
custom_time = initial_time + pd.DateOffset(months=month_offsets) + pd.DateOffset(days=day_offsets) + pd.to_timedelta(cumulative_sec, unit='s')

# 转换成你需要的字符串格式,添加到原DataFrame
df['custom_datetime'] = custom_time.dt.strftime('%Y-%m-%d %H:%M:%S')

如果你的规则不是累计偏移,而是循环式的(比如每x秒后重置,重复变更日期),只需要把day_offsets = cumulative_sec // x改成取模运算即可,比如day_offsets = (cumulative_sec // x) % 31(限制每月最多31天),具体可以根据你的业务需求调整。

备注:内容来源于stack exchange,提问作者span_path

火山引擎 最新活动