質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

841閲覧

python csv ソート処理

gaseri

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/07/07 11:00

###前提・実現したいこと
pythonにて以下の処理を行いたいです。
*python 3系

csvファイルのソート
特定のディレクトリ下にある複数のcsvファイルをソートし、指定したディレクトリへ
ソート後のcsvファイルを出力する。

python実行時には、引数でcsvファイルが存在するディレクトリ及び、出力先のディレクトりを
指定したいです。
例) python test.py -d ../test/ -o ../out/

###ディレクトリ以下のサンプル
~/test/
1.csv 2.csv 3.csv

###csvファイルのサンプル
*全て同一のレイアウトです。
*A列をキーにし、昇順でソート

A,B <- ヘッダ行
2,1.001
15,2.1221
10,1.001

###出力ディレクトリ
~/out/

###環境
Mac anaconda3系を使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

magichan

2017/07/07 11:51

ソートはCSVファイル毎なのでしょうか?それとも全てのデータをマージしてソートなのでしょうか?
gaseri

2017/07/07 11:54

csvファイル単位となります。
magichan

2017/07/07 11:55

では出力は同じファイル名のCSVを書けばよいのですね
gaseri

2017/07/07 11:57

はい、同一ファイル名で問題ございません。
guest

回答1

0

ベストアンサー

CSVのソート部&新CSVの作成、pandasを使ってこんな感じで書けます

Python

1import os 2import glob 3import pandas as pd 4 5files = glob.glob('./test/*.csv') 6for file in files: 7 outfile = os.path.join('out',os.path.basename(file)) 8 df = pd.read_csv(file) 9 df.sort_values('A').to_csv(outfile, index=None)

【追記】

質問のように、コマンドライン引数を取りたい場合はこんな感じ

Python

1import os 2import glob 3from argparse import ArgumentParser 4import pandas as pd 5 6def sort_all_csv(in_folder, out_folder): 7 files = glob.glob(os.path.join(in_folder, '*.csv')) 8 for file in files: 9 outfile = os.path.join(out_folder, os.path.basename(file)) 10 df = pd.read_csv(file) 11 df.sort_values('A').to_csv(outfile, index=None) 12 13if __name__ == '__main__': 14 parser = ArgumentParser() 15 parser.add_argument('-d', type=str, default="./test") 16 parser.add_argument('-o', type=str, default="./out") 17 arg = parser.parse_args() 18 sort_all_csv(arg.d, arg.o) 19

投稿2017/07/07 12:07

編集2017/07/07 14:28
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gaseri

2017/07/09 14:35

ありがとうございました。 やりたかった事が全て実現出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問