私は、Argparseパーサーを設定して、シェルからユーザー入力を読み込みます。入力は、文字列と数字を含むpandas DataFrameからデータを抽出するために使用されます。私は自動的にArgparse .add_argument()
のtype=
引数をそれぞれの列のデータ型と一致するように設定したいと思います。argparseでnumpyデータ型を使用する
for c in inputdata.columns:
inputname= c
inputtype= np.dtype(inputdata[c])
parser.add_argument("--"+inputname, type=inputtype)
しかし、これは動作しません:
私の考えは入力データがデータフレームである。このようなArgparse引数を設定することでしたPythonはValueError: dtype('int64') is not callable
上げます。これは、Numpyのファイルタイプの権利を与えるものではないためです。例:入力タイプをfloatに設定すると、計画どおりに進む。手動でtype=np.int64
と入力すると、Argparseにも問題はありません。私はそれが上に示したループで、すなわちint64型とオブジェクト、私のデータフレーム内のファイルタイプを受け入れるように取得できますか
?私はいくつかのオプションを試しましたhere同様に、
dtype.type
しかし何も働かなかった。これはちょっとできませんか?私はそれがnumpyのデータ型と罰金だ上で言ったように、内蔵型や関数
共通の型引数
の値として直接使用することができますがのみことをArgparse docs状態明示的に入力した場合。
ありがとうございました!
この文脈では、 'callable'は通常、文字列を(あなたの入力から)取り出し、それを他のものに変換する関数です。そして、入力文字列が正しく形成されていないというエラーが発生します。 'np.int64( '123')'が動作します。 'np.dtype( 'int64')( '123')'はしません。 – hpaulj