用python拆分列

时间:2017-09-23 09:57:28

标签: python python-3.x csv multiple-columns

我有一个Csv文件,其中包含一列和一个原始文件。该列有143个值(所有数字),我想拆分列,以便每个值都有自己的列(即143列)

我怎么能用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是必需的

2 个答案:

答案 0 :(得分:0)

使用此代码将逻辑转换为代码,但此代码也会将您的列值转换为行。

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

答案 1 :(得分:0)

preg_match_all("\#\"\>[a-z]\w+\<\/\a\>,
    $out, PREG_PATTERN_ORDER)

修改 稍微改进它以获得具有一周中几天的命名列的DataFrame。如果您不想这样,只需将days变量替换为range(7)

即可

尽管如此,我认为你的想法不起作用。如果您每天有11个观看次数怎么办?访问列中的第一个数字:不应该是总访问量的总和(否则为什么有8个数字?)