Python 将熊猫按组转换为列
我试图将Pandas数据帧分为两种不同的组类型,a_Bucket和B_Bucket,并将每个a_Bucket组转换为一列。我得到的分组如下:Python 将熊猫按组转换为列,python,pandas,dataframe,Python,Pandas,Dataframe,我试图将Pandas数据帧分为两种不同的组类型,a_Bucket和B_Bucket,并将每个a_Bucket组转换为一列。我得到的分组如下: grouped = my_new_df.groupby(['A_Bucket','B_Bucket']) 我希望A_Bucket组在列中,B_Bucket组作为索引。”A'大约有20个值,B大约有20个值,所以总共有大约400个组 打印分组及其类型时,我得到: type of grouped2 = <class 'pandas.core.group
grouped = my_new_df.groupby(['A_Bucket','B_Bucket'])
我希望A_Bucket组在列中,B_Bucket组作为索引。”A'大约有20个值,B大约有20个值,所以总共有大约400个组
打印分组及其类型时,我得到:
type of grouped2 = <class 'pandas.core.groupby.DataFrameGroupBy'>
A_Bucket B_Bucket
0.100 100.0 5.418450
120.0 18.061367
0.125 80.0 3.100920
100.0 14.137063
120.0 30.744823
140.0 38.669950
160.0 48.303129
180.0 74.576333
200.0 125.119950
0.150 60.0 0.003200
80.0 2.274807
100.0 5.350074
120.0 23.272970
140.0 40.131780
160.0 47.036912
180.0 72.438978
200.0 117.365480
我看到这个问题:
但是我不理解语法,而且它没有像我需要的那样将第一个组排列成列。我还希望它能用于多个输出列
我该怎么做 如果我理解正确,您正在尝试重塑数据帧,而不是按摘要分组,在这种情况下,您可以使用
set\u index()
和unstack()
:
如果您确实在按分组后完成了摘要,那么您仍然可以执行
df.groupby(['A_Bucket','B_Bucket']).mean().unstack(level=0)
这似乎不起作用。它多次重复索引,并且有更多的列。我希望有一个20x20左右的数据帧,但这会得到186x318。对不起。我没有仔细阅读你的问题。因此,您实际上希望将数据帧的格式从长格式改为宽格式。但有一个问题,你似乎在groupby之后没有做任何聚合?是的,对不起,我没有把它放在那里。我想取每个组/子组的平均值。对于一个输出列,我希望是20 x 20,但是对于两个输出列,我不确定dataframe会是什么样子。是的,第二个(带mean())工作得很好。我现在更了解这件事了。非常感谢。
0.1 0.125 0.15
80 NaN 3.10092 2.274807
100 5.41845 14.137063 5.350074
120 18.0613 30.744823 23.27297
140 NaN 38.66995 40.13178
160 NaN 48.303129 47.036912
180 NaN 74.576333 72.438978
200 NaN 125.11995 NaN
df.set_index(["A_Bucket", "B_Bucket"]).unstack(level=0)
# Value
# A_Bucket 0.100 0.125 0.150
# B_Bucket
# 60.0 NaN NaN 0.003200
# 80.0 NaN 3.100920 2.274807
# 100.0 5.418450 14.137063 5.350074
# 120.0 18.061367 30.744823 23.272970
# 140.0 NaN 38.669950 40.131780
# 160.0 NaN 48.303129 47.036912
# 180.0 NaN 74.576333 72.438978
# 200.0 NaN 125.119950 117.365480