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

在Colab中读取CSV并从文件名拆分新增两列至DataFrame开头

问题与解决方案

需求说明

从Google Drive读取符合Platform_Company.csv命名规则的CSV文件(例如Instagram_Microsoft.csv)到DataFrame,需将文件名拆分为platform和company两列并添加到DataFrame开头;同时确认现有代码中layer_number的必要性。

现有代码

from pathlib import Path
import pandas as pd

ls_data = []

csv_directory = '/content/drive/MyDrive/Colab Notebooks/'

for idx, filename in enumerate(Path(csv_directory).glob('*Instagram_*.csv')):
    df_temp = pd.read_csv(filename)
    df_temp.insert(0, 'layer_number', idx)
    ls_data.append(df_temp) 

df = pd.concat(ls_data, axis=0)

关于layer_number的必要性

layer_number是给每个读取的文件分配的递增索引(从0开始),仅用于标记当前行来自第几个文件。如果业务逻辑不需要追踪数据来源的文件顺序,这个字段可以直接删除;若有溯源需求,则保留即可。

整合后的完整解决方案

以下代码既保留原逻辑(读取指定规则的CSV),又实现了拆分文件名到platform和company列并插入到DataFrame开头的需求:

from pathlib import Path
import pandas as pd

ls_data = []
csv_directory = '/content/drive/MyDrive/Colab Notebooks/'

# 遍历符合命名规则的CSV文件
for filename in Path(csv_directory).glob('*Instagram_*.csv'):
    # 读取当前CSV文件
    df_temp = pd.read_csv(filename)
    # 获取不带路径和后缀的纯文件名
    file_basename = filename.stem
    # 按第一个下划线拆分文件名,避免公司名含下划线导致拆分错误
    platform, company = file_basename.split('_', maxsplit=1)
    # 将platform和company插入到DataFrame最开头
    df_temp.insert(0, 'company', company)
    df_temp.insert(0, 'platform', platform)
    # (可选)若需保留layer_number,取消下方注释
    # df_temp.insert(0, 'layer_number', idx)
    ls_data.append(df_temp)

# 合并所有DataFrame并重置索引
df = pd.concat(ls_data, axis=0, ignore_index=True)

代码说明

  1. 提取纯文件名:通过filename.stem直接获取去掉路径和.csv后缀的文件名(如Instagram_Microsoft)。
  2. 安全拆分文件名:使用split('_', maxsplit=1)仅按第一个下划线拆分,确保公司名称含下划线时不会被错误拆分。
  3. 插入列到开头:利用insert(0, 列名, 值)将platform和company放在DataFrame最左侧。
  4. 合并优化:添加ignore_index=True重置合并后的索引,避免不同文件的索引重复冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:07:38