Pandas数据框如何合并列

10

我有一个像图片中的Pandas数据框。如何将其转换为下面的表格(演示是在Excel中进行的,但我只是想向您说明表格的外观-此问题与从/导入数据框到Excel无关)。

谢谢enter image description here


这不太清楚。在 pandas 中,你无法像可视化那样获得这些“合并单元格”。据我所知,你不能以你想要的方式从 pandas 中将输出合并到 Excel 中。那么你究竟在寻找什么? - jpp
我只是想知道是否有办法像第二个表格(下面的表格)那样显示pandas数据框。我不想将表格提取到Excel中,也不想从Excel中加载表格。我只是想知道是否可以使用pandas命令简单地显示“合并单元格”像下面的表格一样。 - Phuong Duyen Huynh Ngoc
@PhuongDuyenHuynhNgoc 不,pandas不是一个可视化库,因此要求以非标准方式显示表格是没有意义的。您想在什么情况下这样做? - Dan
2个回答

9

这是不可能的。

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

非常感谢您的回答,这正是我所需要的。 - Phuong Duyen Huynh Ngoc
选项2中的虚拟列有什么作用?与选项1相比,除了在选项2中添加了一个新的虚拟列外,我没有看到太大的区别。 - ollydbg23
@ollydbg23,OP对可视化呈现感兴趣(尽管这对Pandas来说是误导的)。从视觉上看,BBB在选项1中被重复,在选项2中没有。 - jpp
@jpp,感谢回复,我确实没有注意到两个选项中“PM”列的区别。 - ollydbg23

0

你的数据框看起来很好。这取决于你想做什么。

如果你想返回一个Name为AAA且PM为BBB的数据框,你应该使用Pandas查找功能。

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

1
你好,感谢你的回答,但我觉得你误解了我的意思,我的意思是如何将上表转换为下表。因为列名和PM是相同的,所以我想将它们合并成一个单一的值。 - Phuong Duyen Huynh Ngoc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接