Pandas - 数据框架 - 重塑数据框中的值

时间:2016-10-17 01:07:02

标签: python pandas dataframe

我是Pandas的新手,并且在2个单独的列中有一个团队得分的数据框。这就是我所拥有的。

Game_ID Teams   Score

1    Team A  95
1    Team B  85
2    Team C  90
2    Team D  72

这是我想去的地方,然后理想地去。

1   Team A  95 Team B  94
2   Team C  90 Team B  72 

2 个答案:

答案 0 :(得分:4)

您可以尝试以下操作:在row_id的每个组中创建Game_ID,然后通过row_id取消堆叠,这会将您的数据转换为宽格式:

import pandas as pd
df['row_id'] = df.groupby('Game_ID').Game_ID.transform(lambda g: pd.Series(range(g.size)))
df.set_index(['row_id', 'Game_ID']).unstack(level=0).sortlevel(level = 1, axis = 1)

enter image description here

更新

如果首选删除row_id,您可以从列中删除该级别:

df1 = df.set_index(['row_id', 'Game_ID']).unstack(level=0).sortlevel(level = 1, axis = 1)   
df1.columns = df1.columns.droplevel(level = 1)
df1

enter image description here

答案 1 :(得分:0)

知道游戏总是涉及2个团队,我们可以操纵底层的numpy数组。

pd.DataFrame(df.values[:, 1:].reshape(-1, 4),
             pd.Index(df.values[::2, 0], name='Game_ID'),
             ['Team', 'Score'] * 2)

enter image description here