将列中的行分组并转置pandas

时间:2018-03-07 11:46:29

标签: python pandas numpy pandas-groupby

grouping rows in list in pandas groupby

我找到了问题,需要更进一步

这个问题所需的输出是

.topfix {
    position: fixed;
    width: 100%;
    top: 0px;
    height: 42px;
}
.content {
    text-align: center;
    width: 80%;
    margin: 0% 10%;
    background-color: #f0f0f0;
    margin-top: 42px;
}

我想要实现的是

A [1,2]
B [5,5,4]
C [6]

我尝试过使用

A B C
1 5 6
2 5 
  4

输出我被困住了

grouped=dataSet.groupby('Column1')
df = grouped.aggregate(lambda x: list(x))

2 个答案:

答案 0 :(得分:1)

我认为这里不需要使用列表列。 您可以使用groupby生成的组的简单字典理解来实现结果:

out = pd.concat({key: 
                    group['b'].reset_index(drop=True)
                for key, group in df.groupby('a')}, axis=1)

给出了所需的输出:

out
Out[59]: 
     A  B    C
0  1.0  5  6.0
1  2.0  5  NaN
2  NaN  4  NaN

答案 1 :(得分:0)

我相信你需要通过contructor创建DataFrame

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

s = df.groupby('a')['b'].apply(list)
df = pd.DataFrame(s.values.tolist(), index=s.index).T
print (df)
a    A    B    C
0  1.0  5.0  6.0
1  2.0  5.0  NaN
2  NaN  4.0  NaN