您好我在下面有一个示例数据框。我无法通过转置获得所需的结果....
static MyCheckBox ()
{
DefaultStyleKeyProperty.OverrideMetadata (typeof (MyCheckBox), new FrameworkPropertyMetadata (typeof (MyCheckBox)));
}
一个简单的df.transpose()产生......
x = ('P', 'P', 'O', 'DNP', 'D')
y = ('O', 'O', 'D', 'DNP', 'DNP')
z = ('P', 'P', 'O', 'U', 'DNP')
a = ('O', 'O', 'D', 'DNP', 'DNP')
b = ('P', 'DNP', 'O', 'U', 'DNP')
ID = ['ID1', 'ID2', 'ID3', 'ID4', 'ID5']
df = DataFrame(zip(ID, a, b, x, y, z), columns = ['id', 'a', 'b', 'x', 'y', 'z'])
id a b x y z
0 ID1 O P P O P
1 ID2 O DNP P O P
2 ID3 D O O D O
3 ID4 DNP U DNP DNP U
4 ID5 DNP DNP D DNP DNP
所需的输出如下....
0 1 2 3 4
id ID1 ID2 ID3 ID4 ID5
a O O D DNP DNP
b P DNP O U DNP
x P P O DNP D
y O O D DNP DNP
z P P O U DNP
依此类推.....我感谢任何帮助!
答案 0 :(得分:2)
您可以使用pd.melt
:
id
或者,您也可以在调用stack
之前将In [21]: df.set_index('id').stack()
Out[21]:
id
ID1 a O
b P
x P
y O
z P
...
ID5 a DNP
b DNP
x D
y DNP
z DNP
dtype: object
设置为索引:
stack
id
将列级值移动到索引中。由于期望的结果
索引中也有id
个值,使用set_index
移动是很自然的
首先将stack
列放入索引,然后调用In [164]: df.columns.name = 'colvals'
In [165]: df.set_index('id').stack().reset_index()
Out[165]:
id colvals 0
0 ID1 a O
1 ID1 b P
2 ID1 x P
3 ID1 y O
4 ID1 z P
...
20 ID5 a DNP
21 ID5 b DNP
22 ID5 x D
23 ID5 y DNP
24 ID5 z DNP
。
调用reset_index
将索引级别移动到DataFrame列中:
{{1}}