首页 > 解决方案 > 将不同形状的 CSV 组合成一个 CSV

问题描述

我有不同数量的行和列的 CSV。我想创建一个大型 CSV,其中所有 CSV 数据直接堆叠在一起,由第一列对齐。我尝试了下面的脚本,但成功有限;b 是一个空数组,它不保存来自先前循环的数据。

from os import walk
import sys
import numpy as np

filenames= []
dirpath = []
filtered = []
original = []
f = []
b = np.empty([2, 2])



for (dirpath, dirnames, filenames) in walk("C:\\Users\\dkim1\\Python Scripts\\output"): 
     f.extend(dirnames) 

print(f) 

for names in f:  
    print(names)
    df = np.genfromtxt('C:\\Users\\dkim1\\Python Scripts\\output\\' + names + '\\replies.csv', dtype =None, delimiter = ',', skip_header=1, names=True)
    b = np.column_stack(df)
print(b)

标签: pandasnumpycsvdataframeconcatenation

解决方案


你试过 pd.concat() 吗?

import os
import pandas as pd

# just used a single dir for example simplicity, rather than os.walk()
root_dir = "your directory path here"
file_names = os.listdir(root_dir)

cat_list=[]
for names in file_names:  
    df = pd.read_csv(os.path.join(root_dir, names), delimiter = ',', header=None)
    cat_list.append(df)


concatted_df = pd.concat(cat_list)

推荐阅读