在argparse中使用numpy数据类型

pat*_*ick 4 python user-input numpy argparse pandas

我正在设置一个Argparse解析器来通过shell读取一些用户输入.输入将用于从包含字符串和数字的pandas DataFrame中提取数据.我想type=在Argparse中自动设置参数.add_argument()以匹配相应列的数据类型.

我的想法是设置像这样的Argparse参数,其中inputdata是DataFrame:

for c in inputdata.columns:
        inputname= c
        inputtype= np.dtype(inputdata[c])
        parser.add_argument("--"+inputname, type=inputtype)
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用:Python提出了一个ValueError: dtype('int64') is not callable.我想这是因为我没有给它Numpy文件类型喂它; 如果我将inputtype设置为float,则全部按计划进行.如果我手动输入type=np.int64,Argparse也没有问题.

  • 我怎样才能让它接受我的DataFrame中的文件类型,即上面显示的循环中的int64object?我在这里尝试了一些选项,例如dtype.type但没有任何效果.

  • 或者这是不可能的?Argparse 文档仅说明了这一点

常见的内置类型和函数可以直接用作类型参数的值

但正如我上面所说,如果明确放入,numpy数据类型似乎很好.

谢谢你的帮助!

War*_*ser 5

使用

inputtype = np.dtype(inputdata[c]).type
Run Code Online (Sandbox Code Playgroud)

要么

inputtype = inputdata[c].dtype.type
Run Code Online (Sandbox Code Playgroud)

.type属性是可调用的,可用于创建该dtype的新实例.