将 pandas 列转置为一行,使用另一列作为索引
Transposing a pandas col into a row, using another col as an index
我想转置数据框中的一列,使其成为一行,同时使用另一行作为索引。具体来说,我需要所有 ColB 值 ColA == '1' 成为 RowA 的值,以及所有 ColB 其中 ColA == '2' 成为 RowB 的值。
即我需要转:
index ColA ColB
0 1.0 1.1
1 1.0 12.2
2 1.0 4.5
3 2.0 5.1
4 2.0 7.7
5 2.0 9.5
进入...
ColB
0 1 2
ColA
1.0 1.1 12.2 4.5
2.0 5.1 7.7 9.5
------ 更新 #1 ------
参考@Scott_Boston的回答:
df.groupby('ColA').apply(lambda x: x.reset_index().ColB)
似乎给我:
ColA
1.0 0 1.1
1 12.2
2 4.5
2.0 0 5.1
1 7.7
2 9.5
让我们使用 groupby
、apply
和 reset_index
:
df.groupby('ColA').apply(lambda x: x.reset_index().ColB)
输出:
ColB 0 1 2
ColA
1.0 1.1 12.2 4.5
2.0 5.1 7.7 9.5
df.groupby('ColA').ColB.apply(list).apply(pd.Series).rename_axis('ColB',1)
Out[113]:
ColB 0 1 2
ColA
1.0 1.1 12.2 4.5
2.0 5.1 7.7 9.5
我想转置数据框中的一列,使其成为一行,同时使用另一行作为索引。具体来说,我需要所有 ColB 值 ColA == '1' 成为 RowA 的值,以及所有 ColB 其中 ColA == '2' 成为 RowB 的值。
即我需要转:
index ColA ColB
0 1.0 1.1
1 1.0 12.2
2 1.0 4.5
3 2.0 5.1
4 2.0 7.7
5 2.0 9.5
进入...
ColB
0 1 2
ColA
1.0 1.1 12.2 4.5
2.0 5.1 7.7 9.5
------ 更新 #1 ------
参考@Scott_Boston的回答:
df.groupby('ColA').apply(lambda x: x.reset_index().ColB)
似乎给我:
ColA
1.0 0 1.1
1 12.2
2 4.5
2.0 0 5.1
1 7.7
2 9.5
让我们使用 groupby
、apply
和 reset_index
:
df.groupby('ColA').apply(lambda x: x.reset_index().ColB)
输出:
ColB 0 1 2
ColA
1.0 1.1 12.2 4.5
2.0 5.1 7.7 9.5
df.groupby('ColA').ColB.apply(list).apply(pd.Series).rename_axis('ColB',1)
Out[113]:
ColB 0 1 2
ColA
1.0 1.1 12.2 4.5
2.0 5.1 7.7 9.5