对数据帧进行分组并应用元组

时间:2015-12-02 20:05:16

标签: python pandas

我有DataFrame以下表单:

df = pd.DataFrame({('a','A'):[3,4,5,6],
               ('a','B'):[1,1,3,5],
               ('b','A'):[9,7,0,3],
               ('b','B'):[2,0,1,6]
              })

看起来像这样:

    a     b   
   A  B  A  B
0  3  1  9  2
1  4  1  7  0
2  5  3  0  1
3  6  5  3  6

我使用以下命令将其分组到第二级:

grouped = df.groupby(level=1,axis=1)

得到:

Group  A 
________
   a  b
   A  A
0  3  9
1  4  7
2  5  0
3  6  3


Group  B 
________
   a  b
   B  B
0  1  2
1  1  0
2  3  1
3  5  6

如何将每个组的两列放入行中,并将其转换为新的DataFrame。基本上我正试图解决这个问题:

   A      B  
0  (3,9)  (1,2)
1  (4,7)  (1,0)
2  (5,0)  (3,1)
3  (6,3)  (5,6)

我一直在尝试

grouped.apply(lambda x : tuple(x))

但它没有完成这项工作,而是给了我列名称的元组。有没有一种简单的方法可以在不诉诸for循环的情况下执行此操作?

2 个答案:

答案 0 :(得分:1)

尝试

grouped.apply(lambda x: pd.Series([tuple(i) for i in x.values]))

答案 1 :(得分:0)

这似乎可以解决问题:

grouped.apply(lambda x: pd.Series(list(x.itertuples(index=False))))