我在python中有一个数据框,如下所示:
A B C
0 a 1 7
1 a 5 8
3 b 2 1
4 c 5 9
5 d 6 1
6 c 7 1
7 b 1 1
8 d 1 1
我希望它看起来像这样:
C1 c2
a B 1 5
a C 7 8
b B 2 1
b C 1 1
c B 5 7
c C 9 1
d B 6 1
d C 1 1
答案 0 :(得分:2)
您可以创建一个新列,用于标识每个唯一A
中的行号,然后将数据帧转换为宽格式,行号沿着列方向使用unstack()
函数展开:
# create a row id column for each unique value in A
df['X'] = 'X' + (df.groupby('A', group_keys=False).cumcount() + 1).astype(str)
# transform the data frame to wide format with the row id spread along columns
df.set_index(['X', 'A']).stack().unstack(level=0)