Pandas DataFrame列到数据透视表中的单元格

时间:2014-08-22 11:26:49

标签: python numpy pandas

我有一个类似于以下内容的DataFrame:

   | A | B | C | D
---+---+---+---+---
 1 | a | c | e | g
---+---+---+---+---
 2 | a | c | e | h
---+---+---+---+---
 3 | b | d | f | i

我希望得到一个数据透视表,其中列中的A和行中的B,然后C和D作为集合,如下所示:

   |     a     |    b
---+-----------+--------
 c | (e, h, i) |   ()
---+-----------+--------
 d |    ()     | (f, i)

1 个答案:

答案 0 :(得分:2)

groupby然后unstack

>>> f = lambda obj: set(obj[['C', 'D']].values.ravel())
>>> df.groupby(['B', 'A']).apply(f).unstack()
A               a            b
B                             
c  set([g, e, h])          NaN
d             NaN  set([i, f])

或者,你可以有一个独特元素元组而不是set object:

>>> f = lambda obj: tuple(np.unique(obj[['C', 'D']].values))
>>> df.groupby(['B', 'A']).apply(f).unstack()
A          a       b
B                   
c  (e, g, h)     NaN
d        NaN  (f, i)