2017-05-16 7 views
0

그래서 헤더 (생존, pclass, 이름 등)가 포함 된 CSV (https://uploadfiles.io/o5xm3)가 있습니다. 생존 한 열 (0 = 사망, 1 = 예)을 읽으려면 Python을 사용하려고합니다. 사람이 생존하지 못하면 그 사람의 다른 정보 (다른 열에서)를 다른 CSV 파일에 씁니다. 여기에 지금까지 무엇을 가지고 :파이썬을 사용하여 CSV에서 열을 읽고 그 열의 정보를 기반으로 다른 CSV에 쓰기가 가능합니까?

import csv 
with open('titanic-new.csv',newline='') as csvfile: 
    spamreader = csv.DictReader(csvfile, delimiter=",") 
    sortedlist = sorted(spamreader, key=lambda row:(row['name']), reverse=False) 

in_file = open('titanic-new.csv', 'r') 
out_file = open('Q2_out.txt', 'w') 
dict = {} 

in_file.close() 
out_file.close() 

첫 번째 부분은 나에게 알파벳 순서로 이름을 넣어하려고하지만 오류가 점점 오전 : 사람이 너무 감사 좀 도와 수 있다면 (KeyError를 '이름')

편집

: 나는 동료의 파일을 다운로드하고이 (처음 3 선)과 같습니다에만 비 생존자를 포함하는 기존의 CSV를 필터링하려는

survived,pclass,name,sex,age,ticket,fare,cabin 
0,3,"Braund, Mr. Owen Harris",male,22,A/5 21171,7.25, 
1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,PC 17599,71.2833,C85 
+1

헤더를 포함하여 파일에 데이터가 어떻게 나타나는지 예제를 포함하면 도움이 될 수 있습니다. 예를 들어''name "'csv 파일의 헤더와 대/소문자가 같은 경우 – xgord

+0

@xgord 다음과 같이 보이는 csv 파일을 첨부했습니다. http://imgur.com/a/r6wRY (미안, 어떻게 해야할지 모르겠다. 여기에서 서식을 지정하십시오.) – csStudent

답변

0

.

이때
import csv 

with open('titanic-new.csv',newline='') as f_input, open('Q2_out.txt', 'w', newline='') as f_output: 
    csv_input = csv.reader(f_input) 
    csv_output = csv.writer(f_output) 

    # Copy over the header (without the first column) 
    csv_output.writerow(next(csv_input)[1:]) 

    for row in csv_input: 
     if row[0] == '0': 
      csv_output.writerow(row[1:]) 

, 첫 열, 즉 row[0]0 될 것이다 : 이것은 다음과 같이 행해질 수있다. 이 경우 행을 출력 CSV에 씁니다.

이로 시작하는 당신에게 출력 CSV를 줄 것이다 :

pclass,name,sex,age,ticket,fare,cabin 
3,"Braund, Mr. Owen Harris",male,22,A/5 21171,7.25, 
3,"Allen, Mr. William Henry",male,35,373450,8.05, 
3,"Moran, Mr. James",male,,330877,8.4583, 
1,"McCarthy, Mr. Timothy J",male,54,17463,51.8625,E46 

[1:]는 기록 할 때 첫 번째 열을 무시한다는 뜻입니다.

DictWriter도 사용할 수 있지만,이 경우 간단하게 csv.readercsv.writer이면 충분합니다.

+0

if 'row [0] =='0 '의 경우'IndexError list index '가 범위를 벗어납니다. 첫 번째 행만 수행하고 있습니다. – csStudent

+0

왜 첫 번째 행만 수행합니까? 나를 위해 – csStudent

+0

궁금해하는 사람들을 위해 '\ n'에 개행을 사용하여 수정했습니다. – csStudent