Python 使用Pandas从混合格式csv文件中提取字符
因此,我有一个.csv文件,看起来像这样:Python 使用Pandas从混合格式csv文件中提取字符,python,csv,pandas,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 ... 我需要从数据
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)的字母。这些字母表示每月缺失的天数:a表示缺失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)
但是这段代码在字典中只写零。您可能应该尝试进行某种df.stack().value_counts()计算。不知道如何将end analsyis分解为带有列名的groubpy语句。函数值\u计数不起作用-我试过了。