以下是其他问题的一些数据:
A B C
0 s s NaN
1 NaN x x
尝试进行实验,我想将数据帧转换为类似的内容:
0
A s
A NaN
B s
B x
C NaN
C x
作为数据框或系列。这相当于换位和重塑。我该怎么做?
答案 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
删除它。