我有一个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是必需的
答案 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个数字?)