How to delete columns in a CSV file?

后端 未结 9 1718
你的背包
你的背包 2020-11-27 18:05

I have been able to create a csv with python using the input from several users on this site and I wish to express my gratitude for your posts. I am now stumped and will po

相关标签:
9条回答
  • 2020-11-27 18:18

    Use of Pandas module will be much easier.

    import pandas as pd
    f=pd.read_csv("test.csv")
    keep_col = ['day','month','lat','long']
    new_f = f[keep_col]
    new_f.to_csv("newFile.csv", index=False)
    

    And here is short explanation:

    >>>f=pd.read_csv("test.csv")
    >>> f
       day  month  year  lat  long
    0    1      4  2001   45   120
    1    2      4  2003   44   118
    >>> keep_col = ['day','month','lat','long'] 
    >>> f[keep_col]
        day  month  lat  long
    0    1      4   45   120
    1    2      4   44   118
    >>>
    
    0 讨论(0)
  • 2020-11-27 18:21

    I would use Pandas with col number

    f = pd.read_csv("test.csv", usecols=[0,1,3,4])

    f.to_csv("test.csv", index=False)

    0 讨论(0)
  • 2020-11-27 18:25

    You can directly delete the column with just

    del variable_name['year']
    
    0 讨论(0)
  • 2020-11-27 18:27

    Using a dict to grab headings then looping through gets you what you need cleanly.

    import csv
    ct = 0
    cols_i_want = {'cost' : -1, 'date' : -1}
    with open("file1.csv","rb") as source:
        rdr = csv.reader( source )
        with open("result","wb") as result:
            wtr = csv.writer( result )
            for row in rdr:
                if ct == 0:
                  cc = 0
                  for col in row:
                    for ciw in cols_i_want: 
                      if col == ciw:
                        cols_i_want[ciw] = cc
                    cc += 1
                wtr.writerow( (row[cols_i_want['cost']], row[cols_i_want['date']]) )
                ct += 1
    
    0 讨论(0)
  • 2020-11-27 18:28

    you can use the csv package to iterate over your csv file and output the columns that you want to another csv file.

    The example below is not tested and should illustrate a solution:

    import csv
    
    file_name = 'C:\Temp\my_file.csv'
    output_file = 'C:\Temp\new_file.csv'
    csv_file = open(file_name, 'r')
    ## note that the index of the year column is excluded
    column_indices = [0,1,3,4]
    with open(output_file, 'w') as fh:
        reader = csv.reader(csv_file, delimiter=',')
        for row in reader:
           tmp_row = []
           for col_inx in column_indices:
               tmp_row.append(row[col_inx])
           fh.write(','.join(tmp_row))
    
    0 讨论(0)
  • 2020-11-27 18:28

    It depends on how you store the parsed CSV, but generally you want the del operator.

    If you have an array of dicts:

    input = [ {'day':01, 'month':04, 'year':2001, ...}, ... ]
    for E in input: del E['year']
    

    If you have an array of arrays:

    input = [ [01, 04, 2001, ...],
              [...],
              ...
            ]
    for E in input: del E[2]
    
    0 讨论(0)
提交回复
热议问题