使用Pandas从混合格式的csv文件中提取字符

时间:2015-02-24 17:11:01

标签: python csv pandas

所以,我有一个.csv文件,如下所示:

station_id year january february ... december
210018     1916 nodata  221          417a
210018     1917 17b     98           44
....
210252     1910 54e     110          nodata
210252     1911 99d     24i          77
...

我需要从数据中提取a到i(a-i)的字母。这些字母表示每月失踪天数:1表示1天,我表示9天缺失。现在我不在乎“nodata'细胞。从数据单元格中提取字母后,我想计算每月的总缺失天数:

station_id year january february ... december N_missingdays
210018     1916 nodata  221          417      1(a)
210018     1917 17      98           44       11(b+i)
....
210252     1910 54      110          nodata   8(e+c)
210252     1911 99      24           77       13(d+i)

可能最好的方法是创建一个包含station_id,年份和缺失天数的字典。这就是我想要做的事情:

with open('filepath') as file:
    file_reader = reader(file)
    for i,row in enumerate(file_reader):
        for j,item in enumerate(row):
           if item[len(item)-1]=='a':
                file_reader[i][j]=''
                print file_reader

但是这个功能只是删除了文件中的字母而且它没有正常工作。我不确切知道如何从.csv文件中提取字母并计算它们的含义。 我试图做的另一件事是:

with open('filepath') as file:
    file_reader = reader(file)
        next(file_reader)
        letters_dict={}
        for row in file_reader:
            station_id,year,months = row[1],row[2],row[4:]
            letters_list[station_id,year] = months.count('[0-9][a]') + ... + months.count('[0-9][i]') + letters_dict.get(year, 0) + letters_dict.get(station_id,0)

但是这段代码只在字典中写入零。

0 个答案:

没有答案