2017-05-15 31 views
1

我想將下面的數據框轉換成json。轉換列名到第一行

df: 
           A sector B  sector C  sector        
TTM Ratio                  --   35.99   12.70  20.63  14.75      23.06 
RRM Sales              --  114.57    1.51   5.02   1.00    4594.13 
MQR book            1.48    2.64    1.02   2.46   2.73       2.74 
TTR cash           --   14.33    7.41  15.35   8.59  513854.86 

爲了利用我需要在列和指數的獨特名稱的功能df.to_json()這樣做。

因此,我正在尋找的是將列名轉換成一行,並有默認的列號。總之,我想要以下輸出:

df: 
           0  1  2  3  4  5 
           A sector B  sector C  sector        
TTM Ratio                  --   35.99   12.70  20.63  14.75      23.06 
RRM Sales              --  114.57    1.51   5.02   1.00    4594.13 
MQR book            1.48    2.64    1.02   2.46   2.73       2.74 
TTR cash           --   14.33    7.41  15.35   8.59  513854.86 

將列名變成第一行,以便我可以正確地進行轉換。

回答

1

使用由rangelist和原始列名分配:

print (range(len(df.columns))) 
range(0, 6) 

#for python2 list can be omit 
df.columns = [list(range(len(df.columns))), df.columns] 

或者MultiIndex.from_arrays

df.columns = pd.MultiIndex.from_arrays([range(len(df.columns)), df.columns]) 

也可以使用RangeIndex

print (pd.RangeIndex(len(df.columns))) 
RangeIndex(start=0, stop=6, step=1) 

df.columns = pd.MultiIndex.from_arrays([pd.RangeIndex(len(df.columns)), df.columns]) 
print (df) 
       0  1  2  3  4   5 
       A sector  B sector  C  sector 
TTM Ratio -- 35.99 12.70 20.63 14.75  23.06 
RRM Sales -- 114.57 1.51  5.02 1.00 4594.13 
MQR book 1.48 2.64 1.02  2.46 2.73  2.74 
TTR cash  -- 14.33 7.41 15.35 8.59 513854.86