我有一个CSV表,有如下数据:
| not used | Day 1 | Day 2 |
| Person 1 | Score | Score |
| Person 2 | Score | Score |
但是有更多的行和列。每天我都能得到每个人进步的程度,我把这些数据作为字典,其中键是名字,值是分数
问题是,有时字典会包括新的人,而不包括已经存在的人。然后,如果一个新的人来了,它会像前一天一样加0,如果dict不包括已经存在的人,它会给他当天0分
我解决这个问题的想法是在该CSV文件上执行lines=file.readlines(),使用
for line in lines:
names.append(line.split(",")[0])
然后复制行(换行=行) 检查dict的键,看看那个人是否已经在csv中,如果已经在csv中,则在后面加上逗号 但我被困在了0分的加分部分 任何帮助或贡献都将不胜感激
在我吃这个之前
-,day1,day2,day3
Mark,1500,0,1660
John,1800,1640,0
Peter,1670,1680,1630
Hannah,1480,1520,1570
我还有这本字典要补充
{'Mark': 1750, 'Hannah':1640, 'Brian':1780}
结果应该是
-,day1,day2,day3,day4
Mark,1500,0,1660,1750
John,1800,1640,0,0
Peter,1670,1680,1630,0
Hannah,1480,1520,1570,1640
Brian,0,0,0,1780
看看Brian是如何出现在dict中而不是之前的csv中的,他在其他任何一天的得分都是0。我发现一行.split(',')将给出一个N个元素的列表,其中N-2将是那个人第一天之前要添加的零分数量
这在
pandas
中作为外部联接很容易做到。将CSV读入数据框,并从字典生成新的数据框。连接几乎是您想要的,只是因为为空单元格插入了非数字值,所以需要用零填充NaN,并将所有内容重新转换为整数一个潜在的问题是CSV被排序。您不需要简单地将新行追加到底部
相关问题 更多 >
编程相关推荐