数据帧操作,与groupby的东西,可能:/

时间:2015-09-21 11:51:13

标签: python pandas

需要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

目前,我遍历所有内容,但在大型数据框架上,它太慢了。

由于

1 个答案:

答案 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