【问题标题】:Sorting specific CSV column data in Python before output display在输出显示之前在 Python 中对特定的 CSV 列数据进行排序
【发布时间】:2019-12-04 05:31:46
【问题描述】:

我正在尝试按字母顺序对 CSV 文件的特定列进行排序,然后写入输出。 CSV 有大约 200 个条目。这是我到目前为止编写的代码,但它似乎只是在输入数据时显示数据。

import operator
import csv
import requests
from bs4 import BeautifulSoup
import re
import json
def write_output(data):
    with open('C:\\forex.csv', mode='w', encoding="utf-8") as output_file:
        writer = csv.writer(output_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
        writer.writerow(["SYMBOL", "VOLATILITY","% CHANGE",""])
        for row in data:
            writer.writerow(row)

我想调整代码,使“SYMBOL”列在写入输出 CSV 文件之前按字母顺序排序。任何帮助将不胜感激。

【问题讨论】:

  • 能否提供data 的样本?
  • 假设数据只是一个 python 列表列表,而符号将是子列表中的第一个元素你试过了吗for row in sorted(data, key=lambda item: item[0]):
  • 感谢克里斯·多伊尔。你的技术解决了这个问题。非常感谢。
  • 你为什么不用pandas

标签: python python-3.x csv sorting


【解决方案1】:

您需要在开始编写数据之前对其进行排序。假设 data 是一个列表列表,并且该符号是每个子列表的第一个元素,那么您可以修改该行

for row in data:

成为

for row in sorted(data, key=lambda item: item[0]):

这将根据子列表中的第一个元素返回数据的排序表示,并从低到高排序

import operator
import csv
import requests
from bs4 import BeautifulSoup
import re
import json
def write_output(data):
    with open('C:\\forex.csv', mode='w', encoding="utf-8") as output_file:
        writer = csv.writer(output_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
        writer.writerow(["SYMBOL", "VOLATILITY","% CHANGE",""])
        for row in sorted(data, key=lambda item: item[0]): 
            writer.writerow(row)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多