大数据时代的网络到处堆积着数据,自由生长,没有标准,即使是一个日期,就有好几种格式。比如某个网站有一年内的美元人民币汇率历史数据(已下载成excel文件,用pd.read_excel语句转成dataframe),日期的格式如图一:
data = pd.read_excel('美元人民币.xlsx', sheet_name='HistoryExchangeReport')
data = data[['日期', '比率']]
平时处理的日期格式通常是yyyymmdd,或是yyyy-mm-dd。Excel没法简单地实现。在网上查python,也没有很好的办法,只能自己冥思苦想了一天有余,终于让我找到解决之道。一共用了6句语句,就达到了目的。
我使用python pandas有一年有余,并熟悉字符操作和lambda函数,才找到这个方法,所以想分享自己的经验。
下面4句的作用就是根据日期列生成year、 month、 day列,使用了if语句,如果月或日的长度为1,前面就加0,这样一位数就转换成两位数了,效果如图二。
data['日期'] = data['日期'].str.split('/')
data['year'] = data['日期'].apply(lambda x: x[0])
data['month'] = data['日期'].apply(lambda x: x[1] if len(x[1]) == 2 else str(0) + x[1])
data['day'] = data['日期'].apply(lambda x: str(0) + x[2][0:-4] if len(x[2][0:-4]) == 1 else x[2][0:-4])
接着将year、 month、 day列合成新列“trade_date”,格式就是yyyymmdd。
data['trade_date'] = data['year'] + data['month'] + data['day']
最后只取所需要的列,效果见图四。
data = data[['trade_date', '比率']]
推荐一篇Python Pandas教程。学好pandas, 各种数据分析都不怕!
yeayee:Python Pandas教程推荐,全网最佳,没有之一zhuanlan.zhihu.com