所以我有一个数据框:
df = pd.DataFrame([["foo","fizz",1],["foo","fizz",2],["foo","buzz",3],["foo","buzz",4],["bar","fizz",6],["bar","buzz",8]],columns=["a","b","c"])
a b c
0 foo fizz 1
1 foo fizz 2
2 foo buzz 3
3 foo buzz 4
4 bar fizz 6
5 bar buzz 8
我可以分组:
df2 = df.groupby(["a","b"]).sum()
c
a b
bar buzz 8
fizz 6
foo buzz 7
fizz 3
太棒了!但我真正需要的,不是“c”列,而是两列,“foo”和“bar”:
foo bar
b
buzz 7 8
fizz 3 6
有人能推荐一种方法吗?我试着搜索,但我想我没有正确的术语,所以我找不到任何东西。
您可以使用
unstack
来实现:示例:
之后,您将得到多索引列。如果需要获取平面数据帧,可以使用多索引的
droplevel
:编辑
droplevel
从列在unstack
之后变成的多索引中删除级别。默认情况下,它会降低级别0,这是您需要的数据帧。从
help(pd.core.index.MultiIndex.droplevel)
复制:相关问题 更多 >
编程相关推荐