【问题标题】:Extract space-separated columns from .txt and add to save in new dataframe从 .txt 中提取以空格分隔的列并添加以保存在新数据框中
【发布时间】:2021-11-30 12:59:21
【问题描述】:

当谈到 python 时,我是一个新手,我正在尝试创建一个循环遍历文件夹并获取所有 .txt 文件的脚本,该文件包含仅由空格分隔的 2 列数据。然后,我只想从这些 .txt 中取出第二列,并将它们保存到一个新的数据框中,其中“滞后”作为索引,文件名作为标题。我有点卡住了,因为我似乎无法比打印文件名更进一步,仅此而已。任何帮助将不胜感激。 (PS 为令人尴尬的 -50 到 50 行道歉——我知道有一种更有效的方法,但找不到适用于负值的方法。 提前致谢。

    def changeFolder(self):
    #print('woo')

    folder = QFileDialog.getExistingDirectory(None, 'Project Data', '.csv files')
    print(folder)
    if folder == None:
        return
    else:
        print(folder)

    # import required modules
    print('woo')
    from glob import glob
    import pandas as pd
    import numpy as np
    import os
    for files in os.listdir(folder):
        if files.endswith(".txt"):
            print(files)
            data = [pd.read_csv(files, sep=" ", header=None) for files in folder]

    for data in files:
        print(data)
    # transpose columns using numpy
       #tcols = np.transpose(cols)
    # create lag variable for the time lag array from -50 to 50
    lag = [-50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30,
           -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9,
           -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
           21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
           47, 48, 49, 50]
    # constructs dataframe using pandas with the transposed columns, header as respective filenames and index column as time lag
    df = pd.DataFrame(data, columns=[files], index=lag)
    # converts dataframe to .csv file and saves as specified filename below in specified path
    extracted = df.to_csv(r'D:\GLaDOS-CAMPUS\data\TestData-AB\ExtractedABFiles.csv')

    ##Dialogue box in case of success
    mbox = QMessageBox()
    mbox.setText("Hopefully this worked!")
    mbox.setDetailedText("")
    mbox.setStandardButtons(QMessageBox.Ok)
    mbox.setWindowTitle('CSV Batch Processor')
    mbox.exec_()

【问题讨论】:

    标签: python pandas csv pyqt5 txt


    【解决方案1】:

    试试这个:

    lag = [-50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30,
            -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9,
            -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
            21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
            47, 48, 49, 50]
    df1 = pd.DataFrame(lag)
    for file in os.listdir(r"C:\Users\Wilian\Documents\DPROF"):
        if file.endswith(".txt"):
            df2 = pd.read_csv(file, delimiter = "\t")
            df1[Path(file).stem]= df2.iloc[:,1]
            
    df1.set_index(0,inplace=True)
    df1.to_csv(r'D:\GLaDOS-CAMPUS\data\TestData-AB\ExtractedABFiles.csv')
    

    【讨论】:

    • 我编辑了帖子,因为在循环之后设置索引更合适。如果出现任何错误,请告诉我们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2018-11-25
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多