展平大熊猫数据框?

时间:2017-08-24 14:01:52

标签: python pandas dataframe

以下是其他问题的一些数据:

     A  B    C
0    s  s  NaN
1  NaN  x    x

尝试进行实验,我想将数据帧转换为类似的内容:

       0
A      s  
A    NaN
B      s    
B      x
C    NaN    
C      x

作为数据框或系列。这相当于换位和重塑。我该怎么做?

4 个答案:

答案 0 :(得分:2)

另一种方法是使用melt

In[184]:
df.melt().set_index('variable')

Out[184]: 
         value
variable      
A            s
A          NaN
B            s
B            x
C          NaN
C            x

由于中间结果,需要set_index步骤:

In[188]:
df.melt()

Out[188]: 
  variable value
0        A     s
1        A   NaN
2        B     s
3        B     x
4        C   NaN
5        C     x

答案 1 :(得分:1)

你可以通过转换df来使用unstack,即

df.T.unstack().to_frame().reset_index(level=0, drop=True).sort_index()

输出:

     0
A  s  
A  NaN
B  s  
B  x  
C  NaN
C  x  
In [620]:

答案 2 :(得分:1)

或者只是

df.stack(dropna=False).to_frame().reset_index(level=0, drop=True).sort_index()

Out[44]: 
     0
A    s
A  NaN
B    s
B    x
C  NaN
C    x

答案 3 :(得分:0)

这应该适合你:

df.stack().reset_index(level=0, drop=True)

DataFrame.stack()是数据框的展平方法。但是,为了保留数据,它会为您提供MultiIndex。由于在输出框架中,您不需要原始索引,因此可以使用reset_index删除它。