CSVファイルがあります。
CSVファイルには、下記内容が書き込まれております。
このCSVファイルの中身を2つのキー列を用いて並び替えたいと思っています。
エクセルでいうと2レベルで並び替える。
1.csvファイルの 商品名(降順、昇順どちらでも可)で並び替え
2.価格で並び替え。(降順で並び替え)
ですが、参考にしたpythonで並び替えようとすると、1つのキー列でしから並び替える方法がわからず困っております。
※書いたコードでは、商品名でしか並び替えれない状況です。
どなたか、【商品名】で並び替えた後に、【価格】で並び替える方法をお分かりの方がおられましたらご教示お願いできないでしょうか。
よろしくお願いします。
CSVファイル(Shift
1調査日,調査時間,商品名,価格,店舗名 22022/6/8,6:36,りんご,200,A店 32022/6/8,6:36,みかん,70,A店 42022/6/8,6:36,みかん,90,B店 52022/6/8,6:36,りんご,180,B店 62022/6/8,6:36,りんご,150,C店 72022/6/8,6:36,みかん,100,C店 82022/6/8,6:36,みかん,80,D店 92022/6/8,6:36,りんご,220,D店 10
python
1import os 2import csv 3import pathlib 4import operator 5 6#################### 7#定数宣言 8#################### 9#配列初期化 10 11mailfile="mailfile.csv" #メール用の送信ファイル 12 13current_path = os.path.dirname(__file__) 14csv_file = pathlib.Path(current_path, mailfile) 15 16def sort_csv(csv_file: pathlib, sort_row: int, desc: bool = False): 17 18 csv_data = csv.reader(open(csv_file), delimiter=',') 19 header = next(csv_data) 20 sort_result = sorted(csv_data, reverse=desc, key=operator.itemgetter(sort_row)) 21 22 with open(csv_file, "w") as f: 23 data = csv.writer(f, delimiter=',') 24 data.writerow(header) 25 for r in sort_result: 26 data.writerow(r) 27 28if __name__ == '__main__': 29 sort_csv(csv_file, 2, False)
質問は編集できます
無駄に質問建てないで追記修正しましょう
回答1件
あなたの回答
tips
プレビュー