Python 行名と列名を指定して、その要素を抽出する「pandas」

'21/08/26更新:説明を補足しました。
 本記事では、csvファイルをpandasで読み込み、指定した行名(index)と列名(columns)の要素を抜き出す雛形コードを載せました。行数や列数はいくらでも構いません。

 下図のようなcsvファイルがあったとします。これをパンダス(pandas)で読み込む際に、行名(インデックス)はpd.read_csv()の引数index_col=列番号で指定します。一番左の場合は0です。この場合、Noの列が行名になります。

No x_min x_max y_min y_max
1 -3.5 2.22 -2.1 9
2 -1 4 1 10
3 0 5 10 55
4 11 7.3 -100 230

行名「3」、列名「x_min」を指定して、要素「0」を抜き取りたい場合、
行名「1」、列名「x_max」を指定して、要素「2.22」を抜き取りたい場合、
行名「4」、列名「y_max」を指定して、要素「230」を抜き取りたい場合、
これら3つの場合について、Anaconda Promptで実行した例が下図です。順に、0.0、2.22、230が表示されています。

f:id:HK29:20200809200330p:plain

更に、それらの結果を「out_file.txt」に追記してゆく仕様にしています(下図)。

f:id:HK29:20200809201113p:plain

■本プログラム

# -*- coding: utf-8 -*-
import os, sys import pandas as pd def main(): # csv ファイルをpandasのDataFrame型で抽出 df = pd.read_csv(input_file, index_col=0, encoding='utf-8') print(df) val = df.at[target_index, target_column_name] print(val) with open('out_file.txt', 'a') as f: f.write(set_name + '=' + str(val) + '\n') if __name__ == '__main__': input_file = sys.argv[1] #'data.csv' target_index = int(sys.argv[2]) # 3 target_column_name = sys.argv[3] # x_min set_name = sys.argv[4] # X_MIN main() print('finished')

以上

<広告>