相关文章推荐
绅士的创口贴  ·  震惊! ...·  1 月前    · 
被表白的橙子  ·  使用Python ...·  1 月前    · 
腼腆的荔枝  ·  Visual Basic for ...·  2 月前    · 
玩篮球的刺猬  ·  FastReport ...·  2 年前    · 
热情的橡皮擦  ·  Github有趣项目 - 知乎·  2 年前    · 

Python Pandas转换日期格式:将yyyy/m/d转换为yyyymmdd

大数据时代的网络到处堆积着数据,自由生长,没有标准,即使是一个日期,就有好几种格式。比如某个网站有一年内的美元人民币汇率历史数据(已下载成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, 各种数据分析都不怕!

编辑于 2020-07-26 22:07