我的数据框看起来像这样:
df = pd.DataFrame([['7690d79f','Pos'],['7690d79f','Neg'],['7690d79f','Pos'],['7690d79f','Neu'],\
['6690d79f','Pos'],['6690d79f','Neg'],['6690d79f','Pos'],['6690d79f','Neu']]\
,columns=['id', 'vote'])
是:
id vote
0 7690d79f Pos
1 7690d79f Neg
2 7690d79f Pos
3 7690d79f Neu
4 6690d79f Pos
5 6690d79f Neg
6 6690d79f Pos
7 6690d79f Neu
我想将行数转移到列,这样我得到一个resultDF为
id vote_1 vote_2 vote_3 vote_4
7690d79f Pos Neg Pos Neu
6690d79f Pos Neg Pos Neu
如果有帮助,每个ID不超过4票。
虽然这与
类似答案 0 :(得分:2)
我们试试这个:
df1 = df.groupby('id')['vote'].apply(lambda x: pd.DataFrame(x.tolist())).unstack()
df1.columns = df1.columns.droplevel().values + 1
df1.add_prefix('vote_').reset_index()
输出:
id vote_1 vote_2 vote_3 vote_4
0 6690d79f Pos Neg Pos Neu
1 7690d79f Pos Neg Pos Neu