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

Python:去除DataFrame/列表中的括号及重复字符串问题

解决CSV列提取与DataFrame格式异常问题

核心问题拆解

  • 列内容包含括号,未做清洗导致格式混乱
  • 循环逻辑错误:要么append位置错误只生成单行,要么循环中错误添加整个序列导致嵌套重复

分步解决方案

1. 直接提取目标列(避免冗余循环)

优先用pandas原生索引提取,不用手动拼接列表:

import pandas as pd

# 读取CSV文件
raw_df = pd.read_csv("你的文件路径.csv")
# 直接提取指定两列生成新DataFrame
target_df = raw_df[["arrive time", "standby time"]].copy()

2. 批量清理括号内容

根据需求选择清理方式:

  • 如果只是移除所有括号及内部内容:
# 清理arrive time列
target_df["arrive time"] = target_df["arrive time"].str.replace(r"\(.*?\)", "", regex=True).str.strip()
# 清理standby time列
target_df["standby time"] = target_df["standby time"].str.replace(r"\(.*?\)", "", regex=True).str.strip()
  • 如果需要提取standby time括号内的数字转为数值:
target_df["standby time"] = target_df["standby time"].str.extract(r"\((\d+)\)", expand=False).astype(float)

3. 修复循环逻辑(若必须用循环)

如果特殊场景需要循环处理,注意每次循环处理单条数据,append放在循环内:

arrive_data = []
standby_data = []

# 遍历每行数据
for _, row in raw_df.iterrows():
    # 清理arrive time并去重
    clean_arrive = row["arrive time"].replace(r"\(.*?\)", "", regex=True).strip()
    if clean_arrive not in arrive_data:
        arrive_data.append(clean_arrive)
        # 提取standby time的数值
        clean_standby = row["standby time"].str.extract(r"\((\d+)\)")[0]
        standby_data.append(float(clean_standby))

# 转换为DataFrame
final_df = pd.DataFrame({"arrive time": arrive_data, "standby time": standby_data})

4. 处理重复字符串问题

如果提取后存在重复行,直接去重:

target_df = target_df.drop_duplicates(subset=["arrive time"], keep="first")

验证结果

执行完上述步骤后,用print(target_df.head())检查输出,确保每行对应单个时间值和数值型待机时间,无括号、无嵌套重复。

内容的提问来源于stack exchange,提问作者Felipe Abrão Mariotti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:27