day = date_jy['cal_date']
data =[]
for date in day:
df_1d = df1.loc[(df1['date']==date)]
data.append(df_1d)
data =df1.head(0)
for date in day:
df_1d = df1.loc[(df1['date']==date)]
#data = pd.merge(df_1d,data)
data = pd.concat([df_1d,data],axis=0,ignore_index=True)
#df4 = pd.merge(df4,df_row,on=['trade_date'],how='inner')
#df1.loc[(df1['date']==20220623)]['ts_code'].count()#选字段就对字段count,不要ts_code就是对所有字段count,这样就不用循环取数了
#读入交易日期数据
sqlcmd_date_jy = "select * from a_hisdata.date_jy where cal_date>'20220602' order by cal_date ASC "
date_jy = pd.read_sql(sqlcmd_date_jy, dbconn)
df1['zd_flag'] = np.select([(df1['change']>0),(df1['change']==0),(df1['change']<0)],[1,0,-1])
df1['date'] = df1['date'].astype('int')
date_jy['cal_date'] = date_jy['cal_date'].astype('int')
day = date_jy['cal_date']
data =[]
for date in day:
df_1d = df1.loc[(df1['date']==date)]
data.append(df_1d)
data =df1.head(0)
for date in day:
df_1d = df1.loc[(df1['date']==date)]
#data = pd.merge(df_1d,data)
data = pd.concat([df_1d,data],axis=0,ignore_index=True)
#大盘每天的涨跌比和大盘涨跌情况
df1_zd_z = pd.DataFrame(df1[df1['zd_flag']==1].groupby(['date'],as_index=False).zd_flag.count())
df1_zd_z.rename(columns={'zd_flag': 'zd_flag_z'},inplace=True)
df1_zd_d = pd.DataFrame(df1[df1['zd_flag']==(-1)].groupby(['date'],as_index=False).zd_flag.count())
df1_zd_d.rename(columns={'zd_flag': 'zd_flag_d'},inplace=True)
df_zd = pd.merge(df1_zd_z,df1_zd_d,on=['date'],how='left').sort_values(by=['date'],ascending=True)
#读取大盘数据
sqlcmd_dp = "select * from a_hisdata.index_d where trade_date>'20220602'"
df_dp = pd.read_sql(sqlcmd_dp, dbconn)
df_dp.rename(columns={'trade_date': 'date'},inplace=True)
df_dp['date'] = df_dp['date'].astype('int')
#与涨跌比进行合并
df_dp = pd.merge(df_dp,df_zd,how = 'inner',on=['date'])
#大盘的一些衍生字段
df_dp['zdbli'] = df_dp['zd_flag_z']/(df_dp['zd_flag_d']+1)#大盘的涨跌比例
#涨跌比例和大盘涨跌的一个交叉关系分类
df_dp['dp_leixing'] = np.select([((df_dp['pct_chg']>0) & (df_dp['zdbli']>1.5)),((df_dp['pct_chg']<0) & (df_dp['zdbli']>1.5)),((df_dp['pct_chg']<0) & (df_dp['zdbli']<1.49)),
((df_dp['pct_chg']>0) & (df_dp['zdbli']<0.65))],[1,2,-1,-2])
df1 = pd.merge(df1,df_dp,how = 'inner',on=['date'])#这里可以优化,把不必要的字段删掉再合并