You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas拆分日期时间列并清理指定时段重复数据的方法问询

数据集日期时间拆分与过滤完整实现方案

以下用Python Pandas实现你需要的所有操作,步骤清晰可直接复用:

1. 示例数据准备

先模拟你的原始数据集(实际使用时替换成pd.read_csv等加载你真实数据的代码):

import pandas as pd

data = {
    'CreatedDate': ['1/1/2023 0:00', '1/1/2023 0:10', '2/5/2022 14:30', '1/1/2023 0:00'],
    'ClosedDate': ['1/13/2023 12:43', '1/6/2023 10:43', '2/5/2022 14:30', '1/1/2023 0:00']
}
df = pd.DataFrame(data)

2. 拆分日期与时间列

按空格拆分原始的日期时间字符串,拆分后重命名时间列(推荐用TimestampCreated、TimestampClosed作为列名,简洁直观):

# 拆分CreatedDate列,替换原列为日期部分,新增时间列
df[['CreatedDate', 'TimestampCreated']] = df['CreatedDate'].str.split(' ', expand=True)
# 拆分ClosedDate列,替换原列为日期部分,新增时间列
df[['ClosedDate', 'TimestampClosed']] = df['ClosedDate'].str.split(' ', expand=True)

执行后数据集就会变成你需要的格式:日期列单独存放,时间列拆分独立。

3. 删除日期完全相同的行

直接筛选CreatedDate和ClosedDate字符串不相等的行:

df = df[df['CreatedDate'] != df['ClosedDate']]

4. 保留2023年全年数据

为了准确筛选年份,先把日期列转换成datetime类型,再进行筛选:

# 转换日期列为datetime格式,方便年份判断
df['CreatedDate_dt'] = pd.to_datetime(df['CreatedDate'], format='%m/%d/%Y')
df['ClosedDate_dt'] = pd.to_datetime(df['ClosedDate'], format='%m/%d/%Y')

# 筛选创建日期和关闭日期都在2023年的行
df = df[(df['CreatedDate_dt'].dt.year == 2023) & (df['ClosedDate_dt'].dt.year == 2023)]

# 可选:删除临时生成的datetime列(如果不需要保留)
df = df.drop(['CreatedDate_dt', 'ClosedDate_dt'], axis=1)

如果不想转换类型,也可以用字符串匹配筛选(但转换datetime格式更可靠,能避免日期格式异常的情况):

df = df[df['CreatedDate'].str.endswith('/2023') & df['ClosedDate'].str.endswith('/2023')]

完整代码整合

import pandas as pd

# 加载数据集(替换成你的真实数据加载逻辑)
data = {
    'CreatedDate': ['1/1/2023 0:00', '1/1/2023 0:10', '2/5/2022 14:30', '1/1/2023 0:00'],
    'ClosedDate': ['1/13/2023 12:43', '1/6/2023 10:43', '2/5/2022 14:30', '1/1/2023 0:00']
}
df = pd.DataFrame(data)

# 拆分日期与时间列
df[['CreatedDate', 'TimestampCreated']] = df['CreatedDate'].str.split(' ', expand=True)
df[['ClosedDate', 'TimestampClosed']] = df['ClosedDate'].str.split(' ', expand=True)

# 删除日期完全相同的行
df = df[df['CreatedDate'] != df['ClosedDate']]

# 筛选2023年数据
df['CreatedDate_dt'] = pd.to_datetime(df['CreatedDate'], format='%m/%d/%Y')
df['ClosedDate_dt'] = pd.to_datetime(df['ClosedDate'], format='%m/%d/%Y')
df = df[(df['CreatedDate_dt'].dt.year == 2023) & (df['ClosedDate_dt'].dt.year == 2023)]
df = df.drop(['CreatedDate_dt', 'ClosedDate_dt'], axis=1)

print(df)

执行后输出结果:

CreatedDate TimestampCreated ClosedDate TimestampClosed
0    1/1/2023             0:00  1/13/2023           12:43
1    1/1/2023             0:10   1/6/2023           10:43

内容的提问来源于stack exchange,提问作者Jerry Fany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:26:07