skip to content
barorin&

Pythonの基本操作メモ|文字列とbool・range・コマンドライン引数・DataFrame化

/ 6 min read

Table of Contents

はじめに

基本的なのに毎回調べ直してしまう操作をまとめました。

文字列をbool型に変換する

bool("False")True を返します。空文字列以外はすべて True になるためです。文字列の内容で判定したい場合は、自分で関数を書きます。

def str2bool(s: str) -> bool:
return s.lower() in ["true", "t", "yes", "1"]
str2bool("True") # True
str2bool("false") # False
str2bool("1") # True
str2bool("no") # False

range関数の引数

range(3)
# 0, 1, 2
list(range(3)) # リストとして見たいとき
# [0, 1, 2]
range(2, 5) # 第1引数 ≦ i < 第2引数
# 2, 3, 4
range(0, 5, 2) # 第3引数は増分
# 0, 2, 4
range(10, 0, -4) # 負の増分で逆順
# 10, 6, 2

引数の数で意味が変わります。

書き方 意味
range(stop) 0から stop の手前まで
range(start, stop) start から stop の手前まで
range(start, stop, step) step ずつ増減

終了値は常に含まれません。range(2, 5) に5は入らない、というのがいちばん間違えやすいところです。

コマンドライン引数を受け取る

Terminal window
$ python script.py 引数1 引数2

sys.argv にリストとして入ります。

import sys
name = sys.argv[0] # スクリプト名(script.py)
arg1 = sys.argv[1] # 引数1
arg2 = sys.argv[2] # 引数2

sys.argv[0] はスクリプト名で、実際の引数は [1] からです。

多次元配列をDataFrameにしてCSV出力する

機械学習の予測結果(n行×m列のnumpy配列)を、提出形式のCSVにする例です。

import pandas as pd
# 配列をそのままDataFrameにする
submission = pd.DataFrame(y_pred)
# 一番左にid列を追加する
submission.insert(0, "id", test_df["id"])
# ヘッダーとインデックスなしで出力する
submission.to_csv("submission.csv", header=False, index=False, encoding="utf-8")

insert() の引数は挿入位置・列名・値の順です。submission["id"] = ... と書くと右端に追加されてしまうため、先頭に置きたい場合は insert() を使います。

提出形式にヘッダーが必要かどうかは、参加しているコンペの指定に従ってください。header=False はヘッダー行を出力しない指定です。

おわりに

どれも基本的な操作ですが、range の終了値や sys.argv[0] のように、うろ覚えだと1つずれるものばかりです。うまく動かないときは、まず境界を確認してみてください。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。