今天做了个数据整理的事,本来任务很简单,就是将某公司的利润表中的数据进行一下处理,只需要每一年年末的公报中的数据,其他的不要的都删掉,目的是观察一下该公司的运营情况。
基本数据导入后如图:
可以发现,公司会在不同时期发布公报,而且经常是一个日期有几条数据,但在重要指标上又基本相同,我的目标是只要每年12月31日的一条数据即可,没想到绕了一大圈最后还是简单处理了。
问题出在这个日期上,常见的日期格式是xxxx-xx-xx,年-月-日的形式,中间有个分隔符,可这个日期数据就是个数字,不是日期,于是倒腾了半天用日期的相关方式处理,怎么都弄不了,最后干脆将数字变成字符串,用字符串来处理了。
首先,按日期进行分组,只保留其中序号最大的:
dt1=dt1.loc[dt1.groupby('end_date')['end_date'].idxmax()]
可以看到数据中仍然存在日期不是12月31日那天的数据,其他重复数据已经全部删除掉了,接着再删掉那些日期不是12月31日的数据。
但发现因删除数据,导致索引已经被破坏了,于是先重建索引
dt1.index=range(0,len(dt1))
再删除数据
for i in range(len(dt1)):
if str(dt1.loc[i].end_date)[4:]!='1231':
dt1.drop(i,inplace=True)
dt1
这里就用了个字符串处理,唉,没想到如此无语
最后就拿到了这个公司从13年至20年的全部利润表基本数据:
看来脑子有时候还是要转转弯的,不要想得太复杂。