Concatenating/merging 个垂直文件 pandas

Concatenating/merging files vertically in pandas

我可以使用 NumPy 垂直堆栈连接目录中的所有文件。但与 pandas 相比需要很长时间(合并约 30 秒,而 pandas 合并仅消耗约 3 秒)

import numpy as np
from glob import glob
files = sorted(glob('ILU-545*.txt'))
print(files)
    array = np.loadtxt(files[0], delimiter='\t')
    for file in files[1:]:
         array = np.vstack((array, np.loadtxt(file, delimiter='\t')))

array.shape=(2000000,16) # 这没问题,但与 pandas 相比需要更多时间 enter image description here 在 pandas 中,我可以调用目录中的所有文件,但在连接后 data.shape 不同于 array.shape

import pandas as pd
from glob import glob
files = sorted(glob('ILU-545*.txt'))
print(files)
data = pd.concat((pd.read_csv(file, delimiter='\t') for file in files))
data.head()
data.shape

任何人都可以帮助我使用 pandas 修复数据的形状吗?提前致谢。

好的,这是一种垂直堆叠文件的混合方式,最后输出为 numpy 数组。这是 导入 os 导入时间 导入 glob 将 pandas 导入为 pd 将 numpy 导入为 np 将 matplotlib.pyplot 导入为 plt 路径 = "C:/Users/sys/PycharmProjects/test1" 开始 = time.time()

allFiles = glob.glob(os.path.join(path, "ILU-545*.txt"))
np_array_list = []
for file_ in allFiles:
    df = pd.read_csv(file_, sep='\t',  index_col=None, header=None)
    np_array_list.append(df.values)
comb_np_array = np.vstack(np_array_list) # Array
BIG_data_frame = pd.DataFrame(comb_np_array) # Dataframe
print("Big Frame shape is: ", array.shape)
end = time.time()
print("Time Required (in sec) :", end - start)

这样Big Frame shape is: (57950000, 16)Time Required (in sec): 90.41600012779236。 使用 np.vstack(pandas 除外)需要更多时间:Time Required (in sec) : 1598.8368678092957(慢 18 倍!!)对于相同形状的数组 : (57950000, 16)。欢迎使用更快的方法来合并相同类型整数数据的文件。