相同数据框中的列映射

时间:2018-05-21 10:45:14

标签: python pandas dataframe

Students  Score1  Students  Score2  Students  Score3
   A        50       B        88       A        48
   B        40       A        76       C        47
   C        28       C        74       B        40

如何将上述数据框格改为以下格式:

Students  Score1  Score2  Score3
   A        50      76      48
   B        40      88      40
   C        28      74      47

我所知道的唯一方法是将iloc应用到单独的数据帧中,然后将它们连接在一起,还是有单向方法可以实现? * Python将重复的列读作Student,Students.1,Students.2等等。

1 个答案:

答案 0 :(得分:0)

使用pd.concatpd.DataFrame.iloc成对迭代您的列:

res = pd.concat([df.iloc[:, 2*i:2*i+2].set_index('Students') for i in \
                 range(int(len(df.columns) / 3 + 1))], axis=1)

print(res)

   Score1  Score2  Score3
A      50      76      48
B      40      88      40
C      28      74      47

您可以将索引提升到专栏@ piRSquared的解决方案:

print(res.rename_axis('Students').reset_index('Students'))

  Students  Score1  Score2  Score3
0        A      50      76      48
1        B      40      88      40
2        C      28      74      47