series索引 - python数据框列名




如何将数据框中的熊猫索引转换为列? (2)

为了更清楚一点,我们来看一下在其索引中有两个级别的DataFrame(一个MultiIndex)。

index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'], 
                                    ['North', 'South']], 
                                   names=['State', 'Direction'])

df = pd.DataFrame(index=index, 
                  data=np.random.randint(0, 10, (6,4)), 
                  columns=list('abcd'))

使用默认参数调用的reset_index方法将所有索引级别转换为列,并使用简单的RangeIndex作为新索引。

df.reset_index()

使用level参数可以控制将哪些索引级别转换为列。 如有可能,请使用更清晰的级别名称。 如果没有关卡名称,则可以通过其整数位置来引用每个关卡,这些位置从外部开始为0。 您可以在这里使用标量值或者您想要重置的所有索引的列表。

df.reset_index(level='State') # same as df.reset_index(level=0)

在极少数情况下,您希望保留索引并将索引转换为列,您可以执行以下操作:

# for a single level
df.assign(State=df.index.get_level_values('State'))

# for all levels
df.assign(**df.index.to_frame())

这似乎相当明显,但我似乎无法弄清楚如何将数据框架的索引转换为列?

例如:

df=
           gi  ptt_loc
 0  384444683      593  
 1  384444684      594 
 2  384444686      596  

至,

df=
    index1       gi    ptt_loc
 0  0     384444683      593  
 1  1     384444684      594 
 2  2     384444686      596  

之一:

df['index1'] = df.index

或者.reset_index

df.reset_index(level=0, inplace=True)

所以,如果你有一个索引为3级的多索引框架,如:

>>> df
                       val
tick       tag obs        
2016-02-26 C   2    0.0139
2016-02-27 A   2    0.5577
2016-02-28 C   6    0.0303

并且您想要将索引中的第一( tick )和第三( obs )级别转换为列,您应该这样做:

>>> df.reset_index(level=['tick', 'obs'])
          tick  obs     val
tag                        
C   2016-02-26    2  0.0139
A   2016-02-27    2  0.5577
C   2016-02-28    6  0.0303




pandas