• DataFrame的构建及一些操作


    一、DataFrame构建

    1.用多个列表构建

    #构建DataFrame

    #self._stkpool_uni、codes、end_date(这些list用append填充值,保证各个list中元素个数一致)
            dfData = {"STK_UNI_CODE":self._stkpool_uni, "STK_CODE":codes, "END_DATE":end_date,
                      "SCORE_FAC":score, "DIS_FAC":descri, "RAT_FAC":star, "MAC_FAC":mac}
            df = pd.DataFrame(data=dfData)

    2.用一个列表构建(其中列表元素为dict,dict的值来自tuple)

      findata_list = []              #定义一个空list
       for res in query_Object:          #res是元组
                dict_fin = {}             #定义一个空dict
                for arr in range(0,len(res)):       #for循环元组
                    dict_fin[columns[arr]] = res[arr]   #给dict填值
                findata_list.append(dict_fin)      #给list填值
           dfQuery = pd.DataFrame(findata_list)   #通过list构建DataFrame

    3.指定列的顺序  

      df_data = {"公式代码":gsCode, "股票市场":gpMarket, "股票代码":gpCode, "日期":signalDate, "新接口":mField, "老接口":mFieldOnline}
      col = ['公式代码','股票市场','股票代码','日期','新接口','老接口']
      df = pd.DataFrame(data=df_data,columns=col)

    二、DataFrame一系列小操作总结

    1.DataFrame排序

      ①.根据列值排序(sort_values)

        df_return = df_return.sort_values(['date', 'gpcode'], ascending=[0,1])  # 排序,0倒序,1正序

      ②.根据索引值排序(sort_index)

        dfSort = dfSort.sort_index(ascending=False)

    2.DataFrame query

      strsql = "index <= '{0}'".format(date)
          df_entrydate = dfSort.query(strsql)

    3.DataFrame groupby、pandas.core.groupby.GroupBy.nth

      strsql = "index <= '{0}'".format(date)
          df_entrydate = dfSort.query(strsql)

      gb = df_entrydate.groupby('gpcode')  #按gpcode分组

      ret = gb.nth(0)  #取groupby之后的第1组数据

    4.DataFrame取值

      ①根据已知索引取值(ix)

        res= dfQuery.ix[index]

      ②取一段数据块(iloc, loc)

        1.ret = copy.copy(df_entrydate.iloc[:1])   #取dataframe第一行数据

         

        2.

        

    5.DataFrame修改值

      ①更改某列的某一个值(loc[索引值,列名])

        df_stopdate.loc[df_stopdate.index, "date"] = dict_stopdate[key]

      ②df_stopdate['date'][1]= '2016-01-01'

       df_stopdate['date'] = '2016-01-01'

    6.DataFrame设置索引(set_index)

      ①重置索引(reset_index)

        df_return = df_return.reset_index()

      ②设置索引(set_index)

        df_return = df_return.set_index('a', 'b')

      ③

      import copy
      ret = copy.copy(df_entrydate.iloc[:1])   #取dataframe第一行数据
          ret.index=[[gpcode],[date]]
          ret.index.names=["gpcode","date"]
          df_return = df_return.append(ret)

    7.DataFrame取一列索引的值

      ①一重索引取值

        df.index.tolist()

      ②多重索引取值(df.index.get_level_values('列名'))

        dfQuery.index.get_level_values('gpcode')

    8.DataFrame删除

      ① 某一列(del)

      del(df_entrydate["gpcode"])

      ② 某一列(drop、axis=1

      df = df.drop(['col1','col2'],axis=1)

      ③ 某一行(drop、axis=0

      df = df.drop([0],axis=0) #删除第一行

    9.DataFrame的某一列转换类型

      prit dfQuery.dtypes

      

      pandas中没有"string",string类型的被存为object。

      将date列转换成datetime64类型

      import numpy as np

      dfQuery['date'] = dfQuery['date'].astype(np.dtype("datetime64"))

      print dfQuery.dtypes

      

    未完待续。。。

     其他操作参见:http://www.cnblogs.com/chaosimple/p/4153083.html

  • 相关阅读:
    创建可按比例调整的布局的 Windows 窗体
    Visual C# 2010 实现资源管理器
    Visual C# 2010 实现菜单项和状态栏
    使用异步事件在后台进行计算并报告进度
    A Byte of Python(简明Python教程) for Python 3.0 下载
    面向对象思想
    封装变化(二)
    好玩,看你的博客价值几何?
    基于消息与.Net Remoting的分布式处理架构
    设计之道
  • 原文地址:https://www.cnblogs.com/SZxiaochun/p/6290514.html
Copyright © 2020-2023  润新知