循环for处理数据

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'])#这里可以优化,把不必要的字段删掉再合并

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值