最近要用到甲醇期货日线159合约数据,自己写了一段代码,按照我自己的需求重新构造了列头
import pandas as pd
from functools import reduce
import numpy as np
import xlsxwriter
import akshare as ak
from openpyxl import load_workbook
import datetime
#获取历史数据,新浪的
df1 = ak.futures_zh_daily_sina(symbol="MA2301")
df2 = ak.futures_zh_daily_sina(symbol="MA2305")
df3 = ak.futures_zh_daily_sina(symbol="MA2209")
order = ['date', 'open', 'close', 'low', 'high', 'volume']
df1 = df1[order]
df2 = df2[order]
df3 = df3[order]
#获取实时数据,新浪的
spot_df1 = ak.futures_zh_spot(symbol='MA2301', market="CF", adjust='0')
spot_df2 = ak.futures_zh_spot(symbol='MA2305', market="CF", adjust='0')
spot_df3 = ak.futures_zh_spot(symbol='MA2209', market="CF", adjust='0')
order0 = ['time', 'open', 'current_price', 'low', 'high', 'volume']
spot_df1=spot_df1[order0]
spot_df2=spot_df2[order0]
spot_df3=spot_df3[order0]
spot_df1.columns=['date', 'open', 'close', 'low', 'high', 'volume']
spot_df2.columns=['date', 'open', 'close', 'low', 'high', 'volume']
spot_df3.columns=['date', 'open', 'close', 'low', 'high', 'volume']
tt=datetime.datetime.now()
tt=pd.to_datetime(tt)
tt.strftime('%Y-%m-%d')
spot_df1["date"]=tt
spot_df2["date"]=tt
spot_df3["date"]=tt
#历史和实时数据合并
df_new1 = pd.concat([df1,spot_df1],ignore_index=True)
df_new2 = pd.concat([df2,spot_df2],ignore_index=True)
df_new3 = pd.concat([df3,spot_df3],ignore_index=True)
df0 = pd.merge(df_new1, df_new2, on='date', how='left')
df0 = pd.merge(df0, df_new3, on='date', how='left')
order0 = ['date', 'open_x', 'close_x', 'low_x', 'high_x', 'open_y', 'close_y', 'low_y', 'high_y', 'open', 'close', 'low', 'high', 'volume_x', 'volume_y','volume']
df0 = df0[order0]
xlsx = pd.ExcelWriter('获取甲醇期货数据.xlsx')
df0[-10:].to_excel(xlsx, sheet_name="甲醇历史和动态数据",index = False)
df1[-5:].to_excel(xlsx, sheet_name="甲醇1",index = False)
df2[-5:].to_excel(xlsx, sheet_name="甲醇5",index = False)
df3[-5:].to_excel(xlsx, sheet_name="甲醇9",index = False)
xlsx.close()



