我想使用python代码将DF1转换为Df2。我想将以下数据框(Df1)作为输入,其中每个唯一ID代表一个人:
Df1>
Year ID SUBJECT GRADE
15 1 AA A+
15 1 BB B
15 1 CC B+
15 1 DD B+
15 2 AA A-
15 2 BB C
15 2 DD A-
16 3 AA C
16 3 BB A
16 3 CC B+
期望的(预期的)输出应如下所示:
Df2>
ID AA AA-Year BB BB-Year CC BB-Year DD DD-Year
1 A+ 15 B 15 B+ 15 B+ 15
2 A- 15 C 15 None 15 A- 15
3 C 16 A 16 B+ 16 None 16
AA年份表示受试者获得AA的年份。
我尝试使用df.groupby
,但获得的结果却不理想。
g = df.groupby(['fregyr','fregkey']).cumcount().add(1)
df = df.set_index(['fregyr','fregkey',g]).unstack(fill_value='None').sort_index(axis=1,level=1)
df.columns = ["{}_{}".format(a, b) for a, b in df.columns]
df = df.reset_index()