2017-09-29 5 views
0

저는 파이썬 초보자이며 예측 결과에 관한 질문을 만났습니다.각 출력 예측 값 앞에 번호 매기기를 어떻게 제거합니까?

ComplexModel에서 테스트 데이터 'P1TestingData'를 예측하고 CSV 파일에 쓰려고했습니다. 그러나 내 예측 데이터가 포함 된 '예측'을 인쇄하면 각 데이터 앞에 0부터 시작하는 번호 매기기가 있음을 보여줍니다. 번호를 어떻게 제거합니까? 나는 CSV 파일에 기록하려고하지만 numberings은 여전히있다

입력 :

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 
+1

예, 그냥 * 파일 *로 팬더 객체의 문자열 표현을 덤프하고 그것을 CSV를 호출하기 때문에. 그것은 마술처럼 표준화 된 형식을 따르지 않습니다. 오히려,'predict.to_csv ('abc.csv', index = False)' –

답변

0

str(prediction)주는 것 같다 당신 같은 문자열 : "0 53.030011 \n 1 -4.019369 ..." 그러므로 당신은 함수 split으로 tring하십시오.

예를 들어 문자열을 분할하여 배열의 각 줄에 넣으려면 다음을 수행 할 수 있습니다. 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 파일의 작동 방식을 잘 모르겠습니다. 다른 방법으로 전화 번호를 수집 할 수없는 경우 상황에 따른 해결 방법입니다.

+0

답장을 보내 주셔서 감사합니다. 이것을 시도하자 –

0

index=False을 설정하여 Pandas의 인덱스 열을 제거 할 수 있습니다.

CSV 출력 :

prediction.to_csv(filename, index=False) 

인쇄 :

print(prediction.to_string(index=False)) 
+0

그것이 작동합니다. 정말 고마워 –