随笔
今天在转换dataframe为dictionary的时候,日期总是变成timestamp的格式,最后想了个办法,先在dataframe里面把datatime64[ns]格式转为str,这样就不会变了。
下午打开excel的时候,又出现了上次出的问题,可能是openpyxl的版本问题(我倒退了也无法解决),或者是文本格式的数字问题,最后还是像上次那样,用了xlwings来解决的。
思路是这样的,先用xlwing把整个excel打开,然后用
sheet1 = wb.sheets['000001.SZ'].used_range.value
df = pd.DataFrame(sheet1)
非常简单的两行代码就可以解决,used_range是我不了解的功能,每个excel都不一样,不好判断range的范围。做的时候还马虎了一下,以为每个sheet都是从sheet1开始的,但其实不是的,以后要看清要使用的sheet的名字。
当把sheet提取到dataframe的时候,使用to_datetime()函数转换为datetime64格式,又犯了一个错误。错误代码如下:
df1["日期"]=df1.to_datetime(df1["日期"],format="%Y-%m-%d")
正确代码:
df1["日期"]=pd.to_datetime(df1["日期"],format="%Y-%m-%d")
因为to_datetime函数不是dataFrame的方法,而是pandas的一个函数,记录下来警醒自己,以后不要犯这种错误。
xlwings我操作不熟练,所以最后还要借助pandas,使用iloc来达到目的。

浙公网安备 33010602011771号