我用熊猫图书馆做一个简单的程序。在
首先我有一个.csv文件小.csv,它包含以下结构。在1,4.0,?,?,none,?
2,2.0,3.0,?,none,38
2,2.5,2.5,?,tc,39
在我的主要功能中,我有以下代码:
^{pr2}$
main函数的解释如下,根据我传递给load_data函数的参数,您必须以某种方式从我的.csv文件加载数据。在
以下是可能的参数和它们开发的功能:inputFile:包含数据的csv文件的名称。在
分隔符:分隔数据的字符。默认情况下,函数必须使用逗号字符(“,”)。在
nan:将被视为缺失值的字符串列表。此列表中某个字符串在输入文件中的任何出现都将被解释为NaN。默认值为“无”。在
header:一个布尔标志,指示文件是否包含头(True)或不包含(False)。默认情况下,它必须为True。在
varNames:一个*Strings*列表,仅在header为有效False的情况下用作变量名。默认值为“无”。在
pref:一个字符串,只有在header为有效False且列表尚未定义时才用作变量名称的前缀*varNames。例如,如果pref=“x”,变量的名称将为“x0”、“x1”、“x2”等。默认值为“var”。在
我的加载数据函数:def load_data(inputFile, delimiter=",", nan=None, header=True,
varNames=None, pref="var_"):
data = DataFrame()
if header == False:
if not varNames:
print "header=false and varNames not defined"
data = pd.read_csv(inputFile, sep=delimiter, na_values=nan, prefix=pref, header=None)
listaNum = list(range(len(data.columns)))
data.columns = listaNum
else: # varNames defined
data = pd.read_csv(inputFile, sep=delimiter, na_values=nan, prefix=pref)
else:
return data
此函数负责根据我们输入的参数显示数据,根据情况改变输出
我必须评估的一个案例是以下。在
如果header=False并且变量varsNames(它表示列的名称)没有传递给该函数(Null),那么我必须将一个从0到列数的数值赋值,即0 1 2。。。最大列数。在
同样,在这个例子中,我必须添加我们传递给那个定义列的数字的前缀,在本例中它将是“col”。在
结果如下:col_0 col_1 col_2 col_3 col_4 col_5
0 1 4.0 NaN NaN NaN NaN
1 2 2.0 3.0 NaN NaN 38.0
2 2 2.5 2.5 NaN tc 39.0
这是我的问题,在我评论过的情况下,我们必须给每个数值列添加前缀,使用变量前缀,我可以手工完成,也就是说,在列列表的每个元素上,添加字符串“col”。在
但是我认为这是错误的,因为我没有使用可以通过read_csv函数传递的“prefix”选项,因此我尝试过它,但是它没有正确地执行。在
这是我的结果,正如您所见,虽然我将prefix参数传递给read_cv函数,但它忽略了它。在0 1 2 3 4 5
0 1 4.0 NaN NaN NaN NaN
1 2 2.0 3.0 NaN NaN 38.0
2 2 2.5 2.5 NaN tc 39.0
另外,还有一个疑问是,因为我在计算必须分配给列的数值,所以我修改已经生成的数据帧,我认为这不是实现它的最佳形式。在