【发布时间】:2020-09-14 18:55:18
【问题描述】:
我现在的函数工作如下:即使它执行了正确的解决方案,我的 CMD 行中也出现了一个巨大的错误 https://i.stack.imgur.com/PBTwz.png(ValueError:无效的文件路径或缓冲区对象类型:)。有谁知道为什么我得到这个错误,即使输出执行正确?
import pandas as pd
import numpy as np
import argparse
target_col = "CountryRefs"
sep = ","
input_file = 'Test_set'
def arg_parse():
parser = argparse.ArgumentParser()
parser.add_argument("-f", "--input_file", required = True)
parser.add_argument("-s", "--sep", required=True,)
parser.add_argument("-t", "--target_col", required=True)
args=parser.parse_args()
return vars(args)
def splitter(input_file, target_col, sep, new_col = None, *argv):
df = pd.read_csv(input_file)
df[target_col] = df[target_col].str.split(sep)
exploded = df.explode(target_col)
exploded[target_col].replace(r'^\s*$', np.nan, regex=True, inplace = True)
exploded.dropna(subset=[target_col], inplace=True)
if new_col == None:
return(pd.DataFrame(exploded[[target_col,*argv]]))
else:
exploded[new_col] = exploded[target_col]
return(pd.DataFrame(exploded[[new_col,*argv]]))
if __name__ == '__main__':
args = arg_parse()
print(splitter(**args))
【问题讨论】:
-
看起来不错,你有什么错误吗?
-
是的,我知道了:
-
Argparse 错误:错误:需要以下参数:-f/--df,-s/--sep, -t/--target_col
-
你应该在调用你的函数时指定这些参数:
python -f something -
你知道如何指定命令行参数吗?你是如何运行这个脚本的?从操作系统外壳窗口?或者像
sypder这样的IDE或者一个窗口?
标签: python pandas cmd argparse tabpy