【问题标题】:Splitting a single column in a .csv file into multiple columns with changes in headings and saving it in a new .csv file using Python 2使用 Python 2 将 .csv 文件中的单个列拆分为多个列并更改标题并将其保存在新的 .csv 文件中
【发布时间】:2017-09-15 11:30:52
【问题描述】:

我在 C:\Users\Win-8.1\Desktop\delhi 中有一个名为 selected.csv 的 .csv 文件,其中包含 3 列:

 Entries        |       Date (LT)    | AQI | Raw Conc.
 First Entry        01-01-2016 00:00   316     322
 Last Entry         31-12-2016 24:00   316     264

现在,我想做的是:

i) 将此 .csv 文件中的数据复制到我在同一文件夹中创建的名为 corrected.csv 的新空 .csv 文件中。

所需的输出应如下所示:

  Entries     |          Date    |    Month    |   Hour   | AQI | Raw Conc.
 First Entry              1         January       12 AM    316     322
 Last Entry              31        December       11 PM    316     264

【问题讨论】:

    标签: python csv


    【解决方案1】:
    import csv
    from datetime import datetime
    
    output_file = open('C:\Users\Win-8.1\Desktop\delhi\corrected.csv', 'w')
    fieldnames = ['Entries', 'Date', 'Month' , 'Hour', 'AQI' , 'Raw Conc']
    writer = csv.DictWriter(output_file, fieldnames=fieldnames)
    writer.writeheader()
    
    with open('C:\Users\Win-8.1\Desktop\delhi\selected.csv') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            output_row = {}
            output_row['Entries'] = row['Entries']
            change_date = datetime.strptime(row['Date (LT)'], '%d-%m-%Y %H:%M')
            output_row['Date'] = change_date.strftime('%d')
            output_row['Month'] = change_date.strftime('%B')
            output_row['Hour'] = change_date.strftime('%I %p')
            output_row['AQI'] = row['AQI']
            output_row['Raw Conc'] = row['Raw Conc']
            writer.writerow(output_row)
    
    output_file.close()
    

    注意:我没有测试过代码,所以如果您遇到任何错误,请告诉我。

    这是您问题的解决方案,但我强烈建议您阅读更多关于 Python CSVPython Datetime 库的信息。这将帮助您解决未来的问题。

    【讨论】:

    • 在 `writer.writeheader() 之后,我收到错误:Traceback(最近一次通话最后一次):
    • 更改 -> open('C:\Users\Win-8.1\Desktop\delhi\corrected.csv')open('C:\Users\Win-8.1\Desktop\delhi\corrected.csv', 'w')
    • 只有标题打印在输出中。数据没有被复制。错误是:Traceback last 最近调用:; 中的文件“”,第 5 行;键错误:“条目”。
    • 是不是因为我的原始文件没有标题“Entries”?
    • excel中打开selected.csv文件并在第一列添加Entries,然后另存为selected.csv并再次运行代码
    【解决方案2】:

    已发布问题的工作代码如下:

    import csv
    from datetime import datetime
    
    output_file = open(r"C:\Users\Win-8.1\Desktop\delhi\corrected.csv", "wb")
    fieldnames = ['Date', 'Month' , 'Year', 'Hour', 'AQI' , 'Raw Conc.']
    writer = csv.DictWriter(output_file, fieldnames=fieldnames)
    writer.writeheader()
    
    with open(r"C:\Users\Win-8.1\Desktop\delhi\selected.csv") as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            output_row = {}
            change_date = datetime.strptime(row['Date (LT)'], '%d-%m-%Y %H:%M')
            output_row['Date'] = change_date.strftime('%d')
            output_row['Month'] = change_date.strftime('%B')
            output_row['Year'] = change_date.strftime('%Y')
            output_row['Hour'] = change_date.strftime('%I %p')
            output_row['AQI'] = row['AQI']
            output_row['Raw Conc.'] = row['Raw Conc.']
            writer.writerow(output_row)
    
    output_file.close()
    

    【讨论】:

      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多