现有一组日期杂乱的数据,要求得到日期准确的数据。
杂乱数据:日期是错误的,但是数据值是正确的,且已知只有周一到周五的数据。
思路:将这组数据每隔五个插入两个数据,组合成日期连续的数据。
使用python语言,完成任务逻辑。
步骤:
-
导入Excel数据,得到dataframe类型数据。(我用的python做的,感觉python内置的函数,会简单方便一点)使用的是pandas库中read_excel函数将Excel数据导入python。
-
将dataframe数据转换成数组。pandas库中直接有values函数将dataframe类型数据转换成array数组类型。
-
使用for循环,每隔5个数据添加两个数据,这两个新数据是前一个数据值。简单的数据逻辑,使用append函数添加即可。(python就是这么
可爱方便,数组也可以直接添加😁) -
将新数组转换回dataframe类型,并重新写回Excel中。直接用Dataframe函数就可以直接转换了,再用to_excel函数导出数据到Excel表中即可。
但其实此时得到的新数组有[[1],[2],[3]]类似的数据,不是正常的数组,尝试了很多办法去掉中括号“[]”,最后用如下办法(网上搜的)将得到的dataframe类型数据去掉中括号才得到正确的数据,使用的是“拉莫达函数”和strip函数去掉中括号。
dataF['Value'] = dataF['Value'].apply(lambda x: str(x).strip('[]'))
-
此时只需要在导出的Excel左侧插入一行,写下前两个日期,向下拖,就可以得到日期准确的数据了。
杂乱的数据:
基于上述逻辑,得到如下代码(命名有点草率😅)
import pandas as pd data=pd.read_excel(r"E:\GraduationDesign\Design\c题\LBMA-GOLD.xlsx",sheet_name="LBMA-GOLD") datai = [] datai = data.values # 每隔5个数据添加2个数据 new_data = [] for i in range(len(datai)): new_data.append(datai[i]) if(i+1)%5 == 0: new_data.append(datai[i]) new_data.append(datai[i]) dataF = pd.DataFrame({'Value':new_data}) dataF['Value'] = dataF['Value'].apply(lambda x: str(x).strip('[]')) dataF.to_excel("E:\GraduationDesign\Design\c题\\newGOLD.xlsx",sheet_name="newGOLD")得到准确的数据如下图:
总结:其实逻辑很简单,就是不太熟悉python了(上一次写还是两年前🤔时间过得真快啊)