代码之家  ›  专栏  ›  技术社区  ›  ASH

如何将多个项目追加到列表中?

  •  0
  • ASH  · 技术社区  · 5 年前

    import pandas as pd
    import csv
    import glob
    import os
    
    results = pd.DataFrame([])
    #results=[]
    filelist = glob.glob("C:\\Users\\ryans\\OneDrive\\Desktop\\test\\*.txt")
    number_of_lines = 2
    for filename in filelist:
        with open(filename) as myfile:
            head = [next(myfile) for x in range(2)]
            results.append(filename)
            results.append(head)
    

    当我运行那个代码时,我最终会出现这个错误。

    TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid
    

    我想以这样的方式结束前三个文件。

    文件1:

    FFIEC CDR Call Schedule RICI 09302019.txt
    IDRSSD  RCFDM708    RCFDM709    RCFDM710
        RE CNSTR LN RECD INVST:INDV IMPARMNT    RE CNSTR LN ALLW BAL: INDV IMPAIRMNT    RE CNSTR LN RECD INVST:COLL IMPARMNT
    

    FFIEC CDR Call Schedule RICI 09302020.txt
    IDRSSD  RCFDM708    RCFDM709    RCFDM710
        RE CNSTR LN RECD INVST:INDV IMPARMNT    RE CNSTR LN ALLW BAL: INDV IMPAIRMNT    RE CNSTR LN RECD INVST:COLL IMPARMNT
    

    文件3:

    FFIEC CDR Call Schedule RICI 12312019.txt
    IDRSSD  RCFDM708    RCFDM709    RCFDM710
        RE CNSTR LN RECD INVST:INDV IMPARMNT    RE CNSTR LN ALLW BAL: INDV IMPAIRMNT    RE CNSTR LN RECD INVST:COLL IMPARMNT
    

    1 回复  |  直到 5 年前
        1
  •  1
  •   ShadowRanger    5 年前

    我很好奇在结果列表中添加行是否就足够满足您的需要:

    import pandas as pd
    import csv
    import glob
    import os
    
    # Use a list here rather than a dataframe
    results=[]
    filelist = glob.glob("C:\\Users\\ryans\\OneDrive\\Desktop\\test\\*.txt")
    number_of_lines = 2
    for filename in filelist:
        with open(filename) as myfile:
            head = [next(myfile) for x in range(2)]
            results.append([filename, *head])
    
    # You can build a dataframe from that list at the end if you desire
    results_df = pd.DataFrame.from_records(results, columns=['filename', 'head_1', 'head_2'])