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

Pandas中使用rstrip无法移除CSV日期时间时分秒问题求助

解决CSV日期中移除时间部分的问题

嘿,我明白你的困扰——用rstrip没生效确实让人头疼,其实是因为rstrip的工作方式和你想的不一样!咱们一步步来解决这个问题:

为什么rstrip没用?

rstrip()是从字符串末尾逐个移除指定的字符,而不是移除整个子串。比如你用"1/12/2011 0:00".rstrip("0:00"),它会把末尾的0、:、0逐个去掉,最后剩下"1/12/2011 "(还留了个空格),完全达不到移除时间部分的效果。

靠谱的解决方案分两种情况:

1. 用Pandas处理(推荐,更稳定)

如果你用Pandas处理CSV,直接把日期列转成日期类型就能自动去掉时间,比字符串处理靠谱得多:

import pandas as pd

# 读取CSV时直接解析目标日期列
df = pd.read_csv('your_file.csv', parse_dates=['日期列1', '日期列2'])

# 把datetime类型转为纯date类型,自动丢掉时间部分
df['日期列1'] = df['日期列1'].dt.date
df['日期列2'] = df['日期列2'].dt.date

# 保存处理后的CSV
df.to_csv('processed_file.csv', index=False)

如果读取时没解析日期,也可以先转换:

df['日期列'] = pd.to_datetime(df['日期列']).dt.date

2. 用原生CSV模块处理(字符串操作)

如果不用Pandas,就直接按空格分割字符串,取前面的日期部分:

import csv

# 打开输入和输出文件
with open('input.csv', 'r', encoding='utf-8') as infile, \
     open('output.csv', 'w', newline='', encoding='utf-8') as outfile:
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    
    # 先写表头
    writer.writerow(next(reader))
    
    # 处理每一行
    for row in reader:
        # 假设第0、2列是需要处理的日期列,根据你的实际列索引调整
        for col_idx in [0, 2]:
            # 按空格分割,只取第一部分(日期)
            date_part = row[col_idx].split(' ', 1)[0]
            row[col_idx] = date_part
        writer.writerow(row)

这里用split(' ', 1)是为了避免万一日期里有空格(虽然很少见),只分割一次,确保只取到日期部分。

小提示

尽量优先用日期类型处理,而不是字符串操作——如果你的CSV里时间格式有变化(比如有的是1:30 PM),字符串分割可能失效,但日期类型转换能自动适配各种合法格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:28:50