对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'在标题中我已经相信这样的壮举只能通过一张桌子完成。如果错误请纠正我。
期待感谢
答案 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]}