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

如何合并含相同Coordinate Bins列的CSV文件以制作热力图并避免列重复?

解决多CSV合并时重复Coordinate Bins列的问题

你遇到的问题根源在于直接用pd.concat(axis=1)横向拼接时,每个CSV文件都自带Coordinate Bins列,导致最终输出里这个列重复了多次。要实现只保留一份Coordinate Bins列、同时合并所有时间区间Counts的需求,我们可以通过将Coordinate Bins设为索引后再拼接的方式解决,具体修改代码如下:

修改后的代码

import os
import glob
import pandas as pd

def combine_to_master(coordmastername, csvdir):
    os.chdir(csvdir)
    ext = "csv"
    all_filenames = [i for i in glob.glob('*.{}'.format(ext))]
    
    # 先对文件名排序,确保时间区间的顺序正确(可选,根据你的文件名规则调整)
    all_filenames.sort()
    
    # 读取每个CSV,并将Coordinate Bins设为索引(避免拼接时重复列)
    df_list = []
    for filename in all_filenames:
        df = pd.read_csv(filename)
        # 将Coordinate Bins设为索引,这样拼接时不会重复该列
        df = df.set_index('Coordinate Bins')
        df_list.append(df)
    
    # 横向拼接所有DataFrame,索引一致的情况下会自动对齐
    combined_df = pd.concat(df_list, axis=1, sort=True)
    
    # 把索引重新变回普通列,恢复你需要的结构
    combined_df = combined_df.reset_index()
    
    # 保存合并后的文件
    combined_df.to_csv(f"{coordmastername}.csv", index=False, encoding="utf-8")

代码说明

  1. 索引设置:将每个CSV的Coordinate Bins设为索引后,横向拼接时只会保留这一份索引,不会重复生成列。
  2. 文件名排序:如果你的CSV文件名对应时间区间顺序(比如time0.csv、time1.csv),排序后能保证合并后的Counts列按时间顺序排列,更适合后续热力图制作。
  3. 缺失值处理:如果某些CSV的Coordinate Bins存在缺失区间,pd.concat会自动用NaN填充,你可以在拼接后添加combined_df = combined_df.fillna(0)将缺失值转为0,符合计数的逻辑。

合并后的预期输出

修改后生成的主CSV会是如下结构,完全满足你制作热力图/二维直方图的需求:

Coordinate Bins,Counts for time interval 0,Counts for time interval 1,Counts for time interval 2,...
"(-10, -9]",0,0,0,...
"(-9, -8]",0,0,0,...
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:27:38