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

如何用Pandas实现多数据集合并并保留公共列与唯一行

实现方案

首先修正初始代码的笔误(data3 == pd.read_csv 多写了一个等号,改为单等号),再按如下代码实现需求:

import pandas as pd 
import numpy as np

# 读取数据集
data1 = pd.read_csv('dataset1.csv', low_memory=False)
data2 = pd.read_csv('dataset2.csv', low_memory=False)
data3 = pd.read_csv('dataset3.csv', low_memory=False) 

# 统一时间列名,解决data2、data3时间列大写、data1时间列小写的不一致问题
data2 = data2.rename(columns={'Date':'date'})
data3 = data3.rename(columns={'Date':'date'})

# 计算三个数据集的公共列,保持列顺序和data1一致,自动过滤非共有列
common_cols = [col for col in data1.columns if col in data2.columns and col in data3.columns]
data1_common = data1[common_cols]
data2_common = data2[common_cols]
data3_common = data3[common_cols]

# 纵向合并三个数据集
all_data = pd.concat([data1_common, data2_common, data3_common], ignore_index=True)

# 按Unix时间戳去重,重复时间仅保留一条记录
all_data = all_data.drop_duplicates(subset='Unix Timestamp', keep='first')

# 按时间升序排序
all_data = all_data.sort_values(by='Unix Timestamp', ascending=True, ignore_index=True)

# 打印结果,如需保存可取消注释下一行
# all_data.to_csv('merged_result.csv', index=False)
print(all_data)

代码逻辑说明

  • 统一列名是为了避免大小写差异导致公共列识别错误,确保date列被判定为共有列
  • 公共列计算使用列表推导式,保留了和data1一致的列顺序,输出结果和样例预期格式完全匹配
  • 去重、排序都使用Unix时间戳作为判断依据,比字符串格式的date列精度更高,不会出现格式兼容问题
  • 处理后的结果自动过滤了data1独有的Low列,删除了重复的2021-10-21 00:03:00记录,且按时间升序排列,完全符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:24:01