【问题标题】:how to merge multiple csv files with ​different headers?如何合并具有不同标题的多个csv文件?
【发布时间】:2021-08-22 11:56:11
【问题描述】:

我有一些图像数据集,我想使用 np.savetxt 将它们转换为 CSV 文件,但我找不到任何方法将它们组合成一个 csv 文件。当我将数据集向量与“np.array”结合时,enter image description here 就是这样。当我尝试合并多个 csv 文件时,即使它们具有不同的标题名称,它们也会组合在相同的标题中,但我不想要它。有没有将它们组合起来,或者只是通过 np.savetxt 将它们保存为一个文件? (顺便说一句,我真的很抱歉我的英语和我的问题,我是 stackoverflow 的新手)

例如我有这两个 csv 文件 (enter image description here,enter image description here) 我想要这样的东西enter image description here(但对于多个文件 这是我的代码

while x!=y:
    img=Image.open(f"0_resized/{x}.jpg").convert("L")
    arr = np.array(img)
    shape = arr.shape
    flat_arr = arr.ravel()
    np.savetxt(f"{x}.csv",flat_arr,fmt="%d")
    x+=1

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    我们可以创建一个包含图像的列表并将其保存到一个 .csv 文件中,而不是创建多个 .csv 文件并将它们组合起来。为此,我们可以对您的代码进行一些小修改,如下所示:

    list_arrays = []
    
    while x!=y:
      img=Image.open(f"0_resized/{x}.jpg").convert("L")
      arr = np.array(img)
      shape = arr.shape
      flat_arr = arr.ravel().tolist()
      list_arrays.append(flat_arr)
        
      x+=1
        
    final_arrays = np.asarray(list_arrays)
    np.savetxt("images.csv", final_arrays.T, delimiter=",")
    

    在上面的代码中,我们创建了一个名为 list_arrays 的列表,我们在其中保存了在 while 循环中创建的平面数组。在读取所有图像并将它们的平面版本保存在我们的列表中之后,我们可以使用 np.asarray 方法将其转换为数组。

    这里的重点是保存的不是数组,而是转置后的数组(final_arrays.T),将每张图片放在一列中。

    【讨论】:

    • 我以为我可以使用 list.append 但正如我所提到的,它不起作用,因为我忘了使用转置。非常感谢您的精彩解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2019-07-18
    • 2019-12-19
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多