Pythonのpandasとawkで同じ処理を実装してみました。
両方ともその時のサンプルコードを載せています。
※MACターミナル(BSD系)での動作確認です。
スポンサーリンク
特定の列のみprint出力
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
awkで実装
例えば、下記のようにin.txtがあったとします。
$ cat in.txt 801,0 802,1 193,2 194,3 305,4
下記のようにawkだとワンライナーで書けますね。
$ cat in.txt | awk -F"," '{print $1}'
下記が実行結果になります。
$ cat in.txt | awk -F"," '{print $1}' 801 802 193 194 305
スポンサーリンク
Pythonのpandasで実装
下記がサンプルコードになります。
read_csv()で読み込んで、iterrows()でループ処理させて1列目をprint出力しています。
awkと比べると多少コード量は多くなります。
これぐらいだとawkでも事足りるかもしれません。
もう少し複雑なことをしようとするとPythonの本領発揮となるでしょうか。
$ cat sample.py #!/usr/bin/env python3 # coding: UTF-8 import pandas as pd df1 = pd.read_csv('in.txt', names=('col1', 'col2')) for index, row in df1.iterrows(): print(row.col1)
下記が実行結果になります。
$ ./sample.py 801 802 193 194 305
スポンサーリンク
特定の列の合計値を求める
awkで実装
こちらもワンライナーで書けます。
$ cat in.txt | awk -F"," '{sum += $2} END{print sum}'
下記が実行結果になります。
$ cat in.txt | awk -F"," '{sum += $2} END{print sum}' 10
Pythonのpandasで実装
2列目の合計値を算出します。
下記がサンプルコードになります。
$ cat sample2.py #!/usr/bin/env python3 # coding: UTF-8 import pandas as pd df1 = pd.read_csv('in.txt', names=('col1', 'col2')) print(df1.col2.sum())
下記が実行結果になります。
$ ./sample2.py 10
スポンサーリンク