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中的文件类型,即上面显示的循环中的int64和object?我在这里尝试了一些选项,例如dtype.type
但没有任何效果.
或者这是不可能的?Argparse 文档仅说明了这一点
常见的内置类型和函数可以直接用作类型参数的值
但正如我上面所说,如果明确放入,numpy数据类型似乎很好.
谢谢你的帮助!
使用
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的新实例.