我有一个看起来像这样的数据框:
df = pd.DataFrame(
{
"id": [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4],
"mod": ["a", "a", "b", "b"] * 4,
"qid": [11, 12, 13, 14] * 4,
"ans": ["Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L", "K"],
}
)
df
id mod qid ans
0 1 a 11 Z
1 1 a 12 Y
2 1 b 13 X
3 1 b 14 W
4 2 a 11 V
5 2 a 12 U
6 2 b 13 T
7 2 b 14 S
8 3 a 11 R
9 3 a 12 Q
10 3 b 13 P
11 3 b 14 O
12 4 a 11 N
13 4 a 12 M
14 4 b 13 L
15 4 b 14 K
每个qid值完全适合mod。例如,qid = 11仅出现在mod = a中。
我想将数据重整为宽格式,以mod和qid作为列级别:
a b
11 12 13 14
id
1 Z Y X W
2 V U T S
3 R Q P O
4 N M L K
在熊猫市有可能吗?我尝试过pivot()
并没有运气。
答案 0 :(得分:0)
使用
pd.pivot_table(df, index='id', columns=['mod', 'qid'], aggfunc='first')
输出
ans
mod a b
qid 11 12 13 14
id
1 Z Y X W
2 V U T S
3 R Q P O
4 N M L K