如何在每个输出预测值之前删除编号?

时间:2017-09-29 17:29:13

标签: python python-3.x csv printing prediction

我是python的初学者,我遇到了关于预测输出的问题。

我尝试在ComplexModel中预测测试数据'P1TestingData'并将其写入CSV文件。但是,当我打印出包含我的预测数据的“预测”时,它表明在我的每个数据之前有一个从0开始的编号。如何删除这些编号? 我试着将它写入CSV文件,但编号仍在那里

输入:

ComplexModel.params

P1TestingData = pd.read_csv('P1TestingData.csv', header=0)

prediction = ComplexModel.predict(P1TestingData) 

print(prediction)

f = open("abc.csv", "w")

f.write(str(prediction))   

f.close()

输出:

0       53.030011

1       -4.019369

2       14.452136

3        3.773111

4       14.535092

5       42.755951

6        6.566402

7       -0.399492

8       32.981286

9       21.616334

10      27.053343

11      20.591277

12      42.253588

13       9.253549

14       5.583377

15       8.145914

16      13.759630

17      -0.371573

18       5.036368

19      -0.338478

20      65.272560

2 个答案:

答案 0 :(得分:0)

似乎str(prediction)给你一个这样的字符串: "0 53.030011 \n 1 -4.019369 ..." 因此,您可以使用函数split拆分字符串。

例如,如果您想拆分字符串以使数组中的每一行都可以执行此操作:str(prediction).split("\n")。 这将为您提供类似的数组:["0 53.030011", "1 -4.019369", ...]

然后你想只有第二个数字。同样的事情,你想要分割字符串,但这次使用空格字符作为分隔符。

最终代码应如下所示:

prediction_str = str(prediction)
lines = prediction_str.split("\n")
numbers = [line.split(" ")[-1] for line in lines]
print(numbers)

第三行有点复杂。它所说的是你想为行中的每个元素创建一个新数组。对于每一行,将字符串拆分为另一个数组,并将空格字符作为分隔符。 " 1 -4.019369"变成[1,-4.019369]。取最后一项(带[ - 1])将得到你的号码。

编辑:我真的不知道csv文件是如何工作的。如果您无法以其他方式收集您的号码,这是您的情况下的解决方法。

答案 1 :(得分:0)

您可以通过设置Pandas来消除index=False的索引列。

CSV输出:

prediction.to_csv(filename, index=False)

打印:

print(prediction.to_string(index=False))