需要Dataframe转换方面的帮助。我有
df = pd.DataFrame({'C' : [1, 2, 1, 1, 2, 2, 1],
'D' : [1, 2, 13, 4, 5, 9, 10]})
df = df.sort('C')
=> C D
0 1 1
1 1 13
2 1 4
3 1 10
4 2 2
5 2 5
6 2 9
想得到
F1 F2 F3 F4
1 1 13 4 10
2 2 5 9 Nan
目前,我遍历所有内容,但在大型数据框架上,它太慢了。
由于
答案 0 :(得分:3)
您可以通过添加新的F列,然后调用pivot
来执行此操作:
>>> df["F"] = "F" + (df.groupby("C").cumcount() + 1).astype(str)
>>> d2 = df.pivot(index="C", columns="F", values="D")
>>> d2
F F1 F2 F3 F4
C
1 1 13 4 10
2 2 5 9 NaN
F和C有索引和列名;如果你真的想摆脱那些你可以把它们设置为无。
>>> d2.index.name = None
>>> d2.columns.name = None
>>> d2
F1 F2 F3 F4
1 1 13 4 10
2 2 5 9 NaN