【问题标题】:Concatenating/merging files vertically in pandas在熊猫中垂直连接/合并文件
【发布时间】:2021-08-25 07:44:19
【问题描述】:

我可以使用 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.shapearray.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 修复数据的形状?提前致谢。

【问题讨论】:

    标签: python-3.x pandas list time-series numpy-ndarray


    【解决方案1】:

    好的,这是一种垂直堆叠文件的混合方式,最后输出为 numpy 数组。它是 导入操作系统 进口时间 导入全局 将熊猫导入为 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(熊猫除外)需要更多时间:Time Required (in sec) : 1598.8368678092957(慢 18 倍!!)对于相同形状的数组: (57950000, 16)。欢迎使用更快的方法来合并相同类型整数数据的文件。

    【讨论】:

    • 'np_array_list.append(df.values)' 给我错误消息“KeyError(key) KeyError: (slice(0, 50000, None), slice(None, None, None))” 如何我可以解决它吗?
    • 'comb_np_array = np.vstack(np_array_list)' # 这是一个'数组',对于科学计算我们需要数组,而'BIG_data_frame = pd.DataFrame(comb_np_array)'是一个数据框有时会产生问题.
    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 2021-08-11
    • 2020-07-04
    • 2017-09-09
    • 2023-02-04
    • 2023-02-10
    • 2021-10-28
    • 2015-05-28
    相关资源
    最近更新 更多