代码之家  ›  专栏  ›  技术社区  ›  hammies

保留列名称顺序

  •  1
  • hammies  · 技术社区  · 7 年前

    如何保留标题名称的顺序。订单不是按字母顺序排列的,而是自定义订单。在数据帧中没问题,但当我这样做的时候 to_dict 订单不是我原来订的。

    这是我在课堂上用的方法。

     #the list is much larger
     income_statements = pd.DataFrame(columns=['Year', 'Operating_Revenue', 'COGS','Income_Tax', 'Total_Revenue')
    
    for year in years:
                url = 'financials/standardized?identifier='+symbol+'&statement=income_statement&type=QTR&fiscal_year='+str(year)+'&date='+date
                fin_data = requests.get(self.get_intrino+url, auth=HTTPBasicAuth(intrino_uname, intrino_pw)).json()['data']
                row = []
                row.append(year)
                for i in range(len(fin_data)):
                    row.append( fin_data[i]['value'] )
                income_statements.loc[len(income_statements)] = row
    

    然后我叫它……这只是一个例子,但我以返回方法为例 income_statements.to_dict()

    结果是首先显示“所得税”,而不是“年”。是否有保存标题列名称的方法?

    1 回复  |  直到 7 年前
        1
  •  1
  •   jpp    7 年前

    除非您使用的是python 3.7+,否则假定字典是无序的。解决方法是先分类然后输入 collections.OrderedDict 以下内容:

    from collections import OrderedDict
    
    df_dict = OrderedDict(sorted(df_dict.items(), key=lambda x: df.columns.get_loc(x[0])))
    

    pd.DataFrame.columns.get_loc 返回列的整数位置。我们假设 df_dict 是列。