我正在尝试重组excel表(或csv),以便日期不再是列标题.我正在使用有限的python知识来尝试这样做,但由于不知道从哪里开始,我可以使用一些帮助.
在每个日期下记录当天发生的特定地点的情况.可以跳过空值.某些单元格包含" - "并且可以转换为0.我想为日期创建一列,并使用一列来表示当天的数字读数.如果当天监控地名,则地名是新行.
示例(以这种方式启动的人的smh):
Name,7/1/2009,7/2/2009,7/3/2009,7/4/2009..... (and so on to the present)
Place A,,5,3,
Place B,0,,23,--
Place C,1,2,,35
Run Code Online (Sandbox Code Playgroud)
我想要的是:
Name, Date, Reading
Place A, 7/2/2009, 5
Place A, 7/3/2009, 3
Place B, 7/1/2009, 0
Place B, 7/4/2009, 0 <--- Even though this is a dash originally it can be converted to a 0 to keep the number an int.
Run Code Online (Sandbox Code Playgroud)
有数百个行(地点),列(日期)已经达到BPD(这是正确的1772列!).
您要做的是将其标准化为表格。
通常执行此操作的方法是:对于非规范表中的每一行,将行插入到规范表中的每个非规范列中。
具体执行此操作的方式取决于您处理表的方式。例如,如果您csv在 Python 3.x 中使用该模块以及 Excel-default-dialect CSV 文件,则其内容将如下所示:
with open('old.csv') as oldcsv, open('new.csv', 'w') as newcsv:
r, w = csv.reader(oldcsv), csv.writer(newcsv)
header = next(r)
w.writerow(['Name', 'Date', 'Reading'])
for row in r:
for colname, colval in zip(header[1:], row[1:]):
w.writerow([row[0], colname, colval])
Run Code Online (Sandbox Code Playgroud)
如果您想使用例如xlrd/ xlwt、XlsxReader/ XlsxWriter、win32comExcel 脚本等,细节会有所不同,但基本思想是相同的:迭代行,然后迭代日期列,生成新行每个值都基于行中的名称、列标题中的日期以及行中的值。
您应该能够从这里弄清楚如何跳过 null 值、转换"--"为等。0
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |