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

如何按日期列合并日期不统一的多个CSV文件并保留文件名对应极性列

问题解答

关于left_join的可行性

可以实现,但操作繁琐、效率偏低,不推荐:

  • 你需要先生成包含所有CSV文件全部日期的基准全量表作为左表
  • 每读取一个CSV都要单独做一次left_join,同时手动把新增的Polarity列重命名为对应文件名
  • 文件数量越多,重复操作的冗余度越高,也更容易出错

更适配的实现方案

R语言(tidyverse生态)

直接用「批量读入+长宽转换」的逻辑,代码量更少、容错率更高,完全满足你列名用原文件名、缺失值留空的需求:

library(tidyverse)

# 1. 读取目标文件夹下所有csv文件,同时记录文件名
csv_list <- list.files(path = "你的文件夹路径", pattern = "\\.csv$", full.names = TRUE)
df_all <- map_dfr(csv_list, function(x) {
  read_csv(x, col_types = cols()) %>% 
    select(Date, Polarity) %>% 
    mutate(file_name = str_remove(basename(x), "\\.csv$")) # 去掉csv后缀当列名
})

# 2. 直接转宽格式,自动按Date对齐,缺失值自动为NA
df_result <- df_all %>% 
  pivot_wider(
    id_cols = Date,
    names_from = file_name,
    values_from = Polarity
  )

Python(pandas生态)

逻辑和R方案完全一致,适配Python使用者的习惯:

import pandas as pd
import os

folder_path = "你的文件夹路径"
df_list = []
for file in os.listdir(folder_path):
    if file.endswith(".csv"):
        df = pd.read_csv(os.path.join(folder_path, file), usecols=["Date", "Polarity"])
        df["file_name"] = file.rsplit(".", 1)[0]
        df_list.append(df)

df_all = pd.concat(df_list, axis=0)
df_result = df_all.pivot(index="Date", columns="file_name", values="Polarity").reset_index()

这个方案的优势在于不管你有多少个CSV、日期顺序多乱,都可以一次处理完成,不需要手动维护关联逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:39:07