从CSV文件中,我有一列日期(yyyy-mm-dd
)。 为了获得数年的数据快照,我希望通过将日期数据从yyyy-mm-dd
截断为yyyy
来对数据进行分类。替换CSV中的日期列数据
例如,如果我想从“表格”(如table.datecolumn
)编辑“datecolumn”,我将如何使用替换功能?还是有另一种方式?
从CSV文件中,我有一列日期(yyyy-mm-dd
)。 为了获得数年的数据快照,我希望通过将日期数据从yyyy-mm-dd
截断为yyyy
来对数据进行分类。替换CSV中的日期列数据
例如,如果我想从“表格”(如table.datecolumn
)编辑“datecolumn”,我将如何使用替换功能?还是有另一种方式?
也许这将帮助你开始...
import csv
import datetime
date_column_index = 1
with open('infile.csv','rb') as infile, open('outfile.csv','wb') as outfile:
csvr = csv.reader(infile, delimiter=',')
csvw = csv.writer(outfile, delimiter=',')
for row in csvr:
temprow = row
temprow[date_column_index] = datetime.datetime.strptime(temprow[date_column_index],'%Y-%m-%d').strftime('%Y')
csvw.writerow(temprow)
它假定没有头。
datetime.datetime.strptime使用来自格式为'YYYY-MM-DD'的csv的输入创建日期时间对象,然后strftime输出一个字符串,只是'YYYY'。
Here更多地使用strptime/strftime格式。
您可以直接在Excel中执行此操作。我希望指定日期输入格式与指定日期输出格式一样容易,但幸运的是它只是one concise line。
在细胞A2
:
08-Feb
在细胞B2
:
=DATEVALUE(RIGHT(A2,3)&"-20"&LEFT(A2,2))
这得到A2
细胞的RIGHT
- 大多数3
字符,增加了-
到,然后添加A2
细胞的LEFT
- 大多数2
字符,它会创建一个字符串,表示DATEVALUE
函数可识别es:
2008-Feb
然后它可以解析日期作为一个实际的日期,并进行各种过滤,排序和比较等。然后,您可以填写以创建解析日期的完整列,并使用它来替换原始文件或保留两列完整。
你可以提供更多的上下文/代码吗?实际上,您可以通过按日期排序和过滤来以Excel(基本GUI,而不是VBA宏)的方式执行此操作。 – TigerhawkT3
上下文是,我正在跟踪2008年至2015年2万个房产的月租金。excel表有yy-mmm(即2008年4月8日意味着2008年4月),所以我使用Python将其清理成yyyy-mm -dd格式。 –
为什么要删除月份和日期? Excel的排序和过滤功能在任何格式的日期都能正常工作。 – TigerhawkT3