在python

时间:2015-10-01 21:35:26

标签: python csv

对Python不熟悉我发现要解决类似问题的解决方案有点困难。 (不确定)在论坛上张贴的性质以及我与他的关联的所有尝试都没有成功

我有一个.csv文件(其中一部分)如下所示

Rank Day Parameter 10 1 x_time 10 2 x_time 9 3 x_time 2 15 x_time 7 16 x_time 10 18 x_time 3 25 x_time 5 31 x_time 2 35 x_time 4 1 t_msg 3 5 t_msg 5 9 t_msg 8 10 t_msg 4 90 t_msg 8 4 g_up 3 5 g_up 3 56 g_up

问题陈述:.csv文件是从数据集中提取的;其目的是研究"参数"的模式。超过一段时间(比如90天)及其在任何给定的"日期"(重力)#34;一段时期。在所述时段期间的特定日期,所述参数可能会或可能不会发生。

现在存在一个模型,其中每个参数出现的实例都放在一个单独的行中(csv文件)。我现在正在尝试(徒劳,直到),对于每个唯一参数,每天只有一行可能存在90个相应的列(因为分析窗口是90天)。对于参数排名的所有日期,其排名按原样排列,其他排名保留为0。

如果解释有助于混淆,请允许我这样说。考虑到csv文件如图所示,我可以将其重塑为具有3行和90列的文件

          day1   day2   day3    day4  ............ day90 
x_time     10     10    9        0                   0 
t_msg       4      0    0        0                   4
g_up        0      0    0        8                   0
  .
  .
  .
PS:我知道我一直都在提及.csv文件但是已经放了' table'在标题中我已经相信这样的壮举只能通过一张桌子完成。如果错误请纠正我。

期待感谢

1 个答案:

答案 0 :(得分:2)

我用90个元素列表的字典做了这个。该参数用作字典键;这一天是列表中的索引。您将排名填入该列表位置。

my_table = {
    "x_time": 90*[0],
    "t_msg": 90*[0],
    "g_up": 90*[0],
}

with open("p.csv") as f:
    for line in f:
        r, d, p = line.split(',')
        rank = int(r)
        day = int(d)
        param = p.strip()
        my_table[param][day-1] = rank

print my_table

...这里是您给定数据的输出(我放入p.csv):

{'x_time': [10, 10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 0, 10, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
'g_up': [0, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
't_msg': [4, 0, 0, 0, 3, 0, 0, 0, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4]}