2017-09-23 11 views
2

私はCsvファイルに1つの列と1つのrawを持っています。列には143個の値(すべての数値)があり、各値が独自の列(つまり143個の列)を持つように列を分割したいPythonを使った分割カラム

どうすればPythonでそれを行うことができますか?

これは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:辞書更新シーケンス要素#0は、長さ1000年を持っている; 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

ありがとう、それはPython 3.6で動作しますか?私はこのエラーが発生する "izip 'をインポートすることはできません – Supern92

+0

pip install izip –

+2

python3でizipを使用しないでください。 – 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にアクセスするには少し改善されました。あなたがそれを望んでいないならば、範囲(7)で日変数を置き換えてください

あなたの考えはうまくいかないと思います。あなたは1日に11回の再生回数をお持ちですか?訪問列の最初の数字は、訪問総数の合計ではないはずです(他に8つの数字があるのはなぜですか?)

+0

ありがとうございます。" ValueError:辞書の更新シーケンス要素#0の長さは1000です。 2が必要です " – Supern92

+0

私のために働いていますが、ソースファイルがありませんまた、どのPythonを使用していますか? – Yorian

+0

したがって、143日間の週の最初の曜日を参照しています。 2週間目は月曜日、2週間目は3週間目、3日目は3週間目の顧客が火曜日に訪問したことを意味します。 ?3番目の週は3番目の列になります。私は意味があると思います。私が使用したコードで更新します – Supern92

関連する問題