如何使用python在csv中形成日期格式?例如2001年1月至2001年1日



我的csv文件看起来像这个

Date     Value  otm  oty
Jan 2015  300    na   na
Feb 2015  302    2    na
Mar 2015  303    1    na
Apr 2015  305    2    na
May 2015  307    2    na
Jun 2015  307    0    na
Jul 2015  305    -2   na
Aug 2015  306    1    na

如何将所有日期更改为mm/yyyy。例如2015年1月是2015年1月份?感谢

def reformat(x):
# returns string
from datetime import datetime
return datetime.strptime(x, '%b %Y').strftime('%m/%Y')
import pandas as pd
df.Date = df.Date.apply(lambda x:reformat(x))

您可以轻松使用Pandas和等日期工具

from pandas import read_csv
from dateutil.parser import parse
frame = read_csv('data.csv', sep='t')
frame['Date'] = frame['Date'].map(lambda x: parse(x).strftime('%m/%Y'))
print(frame)

这将生成一个数据帧,如:

Date  Value otm oty
0  01/2015    300  na  na
1  02/2015    302   2  na
2  03/2015    303   1  na
3  04/2015    305   2  na
4  05/2015    307   2  na
5  06/2015    307   0  na
6  07/2015    305  -2  na
7  08/2015    306   1  na

您也可以使用Python的板载工具(如csv(来实现这一点。DictReader和从datetime.datetime:开始的strptime

from csv import DictReader
from datetime import date
from pprint import pprint

def convert_date(entry):
entry['Date'] = datetime.strptime(
entry['Date'], '%b %Y'
).strftime('%m/%Y')
return entry
with open('data.csv') as src:
reader = DictReader(src, delimiter='t')
data = list(map(convert_date, reader))
pprint(data)

这将产生

[{'Date': '01/2015', 'Value': '300', 'otm': 'na', 'oty': 'na'},
{'Date': '02/2015', 'Value': '302', 'otm': '2', 'oty': 'na'},
{'Date': '03/2015', 'Value': '303', 'otm': '1', 'oty': 'na'},
{'Date': '04/2015', 'Value': '305', 'otm': '2', 'oty': 'na'},
{'Date': '05/2015', 'Value': '307', 'otm': '2', 'oty': 'na'},
{'Date': '06/2015', 'Value': '307', 'otm': '0', 'oty': 'na'},
{'Date': '07/2015', 'Value': '305', 'otm': '-2', 'oty': 'na'},
{'Date': '08/2015', 'Value': '306', 'otm': '1', 'oty': 'na'}]

最新更新