我有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
循环的情况下执行此操作?
答案 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))))