2017-09-23 1 views
2

나는 하나의 열과 하나의 raw를 가진 Csv 파일을 가지고있다. 열에는 143 개의 값 (모든 숫자)이 있고 각 열에 자체 열 (예 : 143 열)이 있도록 열을 분할하고 싶습니다.파이썬으로 열을 분할

어떻게 파이썬으로 할 수 있습니까?

그래서 이것은 csv 파일에서 어떻게 보이는지입니다. 방문수는 일을 나타내며 1은 월요일이고 2는 화요일입니다.

ID    visits 



34   12555566 

I want to separate them so it looks like this 

ID  visits  0   1 



34   1  2  5 

0과 1은 단지 열 이름입니다. 여기

내가 사용하고 코드의 지금까지

import pandas as pd 
file=pd.read_csv('trialtr.csv') 

import calendar 
days = list(calendar.day_name) 

data = [] 
with open('trialtr.csv', 'r') as fh: 
    for line in fh: 
    data.append(line.split()) 

data = dict(zip(*data)) 
d = {day: v for (day, v) in [(day,[int(c)]) for day, c in zip(days, 
data['visits'][1:])]} 
d['ID'] = data['ID'] 
d['visits'] = data['visits'][0] 
data = pd.DataFrame(d) 

나는이 오류지고 결국 : "에 ValueError : 사전 업데이트 시퀀스 요소 # 길이 1000 한 0, 2

+0

일부 값으로 예제를 만들 수 있습니까? – PRMoureu

+0

143 개의 값은 무엇으로 구분됩니까? 그것은 목록인가? 공백으로 구분 된 문자열? – sheldonzy

+0

그들은 분리되지 않았습니다. 그들은 이렇게 보입니다. 34545 – Supern92

답변

0

사용이 필요하다 코드는 코드에 당신에게 논리를 변환하지만,이 코드는 행에 열 값을 변환합니다.

import csv 
from itertools import izip 
a = izip(*csv.reader(open("input.csv", "rb"))) 
csv.writer(open("output.csv", "wb")).writerows(a) 
+0

고마워,하지만 파이썬 3.6에서 작동합니까? 이 오류가 발생했습니다 "izip '이름을 가져올 수 없습니다 – Supern92

+0

pip 설치 izip –

+2

python3에서 izip을 사용하지 마십시오. zip을 사용하십시오. – acushner

0
import pandas as pd 
import calendar 
days = list(calendar.day_name) 

data = [] 
with open('test.csv', 'r') as fh: 
    for line in fh: 
     data.append(line.split()) 

data = dict(zip(*data)) 
d = {day: v for (day, v) in [(day,[int(c)]) for day, c in zip(days, data['visits'][1:])]} 
d['ID'] = data['ID'] 
d['visits'] = data['visits'][0] 
data = pd.DataFrame(d) 

편집 요일의 명명 된 열이있는 DataFrame을 얻으려면 약간 향상되었습니다. 당신이 원하지 않는다면, days 변수를 range (7)로 대체하십시오.

그럼에도 불구하고 나는 당신의 생각이 효과가 없다고 생각합니다. 하루에 조회수가 11 번이라면? 방문 열의 첫 번째 숫자는 총 방문수의 합계가 아니어야합니다 (그렇지 않은 이유는 무엇입니까?)

+0

감사하지만 얻을 수있는"ValueError : 사전 업데이트 시퀀스 요소 # 0의 길이는 1000입니다. 2가 필요합니다 " – Supern92

+0

나를 위해 작동하지만 소스 파일이 없습니다. 또한 어떤 Python을 사용하고 있습니까? – Yorian

+0

그래서 요일은 143 주 과정의 첫 번째 요일을 나타냅니다 (예 : 234.). 고객이 월요일에 방문한 첫 번째 주, 두 번째 주에 화요일에 고객이 방문한 두 번째 주에 있음을 의미하는 3입니다. 예를 들어 추출하려고합니다. 세 번째 주에 일주일에 무엇을 알았 으면합니다. ? 제 3 주가 제 3의 칼럼이 될 것입니다. 내가 의미가 있기를 바란다. 내가 사용한 코드로 업데이트하겠다. – Supern92

관련 문제