Python 在argparse中使用numpy数据类型

Python 在argparse中使用numpy数据类型,python,numpy,pandas,user-input,argparse,Python,Numpy,Pandas,User Input,Argparse,我正在设置一个Argparse解析器,以便通过shell读取一些用户输入。输入将用于从包含字符串和数字的数据框中提取数据。我想在Argparse中自动设置type=参数。添加_argument()以匹配相应列的数据类型 我的想法是像这样设置Argparse参数,其中inputdata是数据帧: for c in inputdata.columns: inputname= c inputtype= np.dtype(inputdata[c]) par

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

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

for c in inputdata.columns:
        inputname= c
        inputtype= np.dtype(inputdata[c])
        parser.add_argument("--"+inputname, type=inputtype)
但是,这不起作用:Python会引发一个
ValueError:dtype('int64')不可调用
。我想这是因为我没有正确地向它提供Numpy文件类型;例如,如果将inputtype设置为float,则所有操作都按照计划进行。如果手动输入
type=np.int64
,Argparse对此也没有问题

  • 如何让它接受数据帧中的文件类型,即上面所示的循环中的int64和object?我也尝试了一些选项,例如
    dtype.type
    ,但没有任何效果

  • 或者这是不可能的?Argparse只声明

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

但正如我在上面所说的,如果显式地放入numpy数据类型,它看起来很好

谢谢你的帮助

使用

inputtype = np.dtype(inputdata[c]).type


.type
属性是可调用的,可用于创建该数据类型的新实例。

在此上下文中,
可调用的
通常是一个函数,它从输入中获取字符串并将其转换为其他内容。如果输入字符串格式不正确,则会引发错误<代码>np.int64('123')有效
np.dtype('int64')('123')
没有。
inputtype = inputdata[c].dtype.type