Pandas Data Frame如何合并列

时间:2018-03-28 11:29:13

标签: python pandas dataframe

我有像图片中的pandas数据框。如何将其转换为如下表格。 (演示是excel,但我只是想向你说明表格是什么样的 - 这个问题与从/向excel导入和导出数据框无关)

谢谢enter image description here

2 个答案:

答案 0 :(得分:4)

这是不可能的。

底层pandas.DataFrame个对象是numpy个数组,它们不会按照您建议的方式对数据进行分组。因此,任意列都不能显示为分组数据。

选项1

使用MultiIndex可以部分复制您想要的输出:

import pandas as pd

df = pd.DataFrame([['AAA', 8, 2, 'BBB'],
                   ['AAA', 9, 5, 'BBB'],
                   ['AAA', 10, 6, 'BBB']],
                  columns=['Name', 'Score1', 'Score2', 'PM'])

res = df.set_index(['Name', 'PM'])

结果:

          Score1  Score2
Name PM                 
AAA  BBB       8       2
     BBB       9       5
     BBB      10       6

选项2

或者您可以在3列上添加虚拟列和set_index

df['dummy'] = 0
res = df.set_index(['Name', 'PM', 'dummy'])

结果:

                Score1  Score2
Name PM  dummy                
AAA  BBB 0           8       2
         0           9       5
         0          10       6

答案 1 :(得分:0)

您拥有的数据框看起来不错。这实际上取决于你想要做什么。

如果您尝试返回名称为AAA且PM为BBB的数据框,则应使用pandas查找

dfnew = df[(df.Name == 'AAA') & (df.PM == 'BBB')]