我想去:
Name idtag Size frq
Apple 123 Medium 20
Apple 123 Small 10
Apple 123 Small 5
Grapes 875 Small 50
Grapes 875 Small 60
Grapes 875 Medium 80
Mango 8894 Medium 30
Mango 8894 Small 25
Mango 8894 Small 20
至:
Name idtag Size frq
Apple 123 Medium 20
Small 10
Small 5
Grapes 875 Small 50
Small 60
Medium 80
Mango 8894 Medium 30
Small 25
Small 20
我已经尝试过
df.set_index(['Name','idtag'])
这样我仍然可以得到每一行的 id 标签,希望它们也成为一个单元格,就像在“名称”列中一样
Pandas 实际上并没有提供单元格合并功能,并且使用
set_index
(您在帖子中所做的)的结果只是使其在视觉上看起来好像单元格已合并,但数据本身并未合并。因此,无法像 Excel 那样单独使用 Pandas 来物理合并单元格。如果您能更具体地解释您正在寻找什么功能,我可以更准确地帮助您。
特定列中的连续数据可以转换为 '' 以使其看起来像是合并的。这可以是一个选择。
代码
cols = ['Name', 'idtag']
df[cols] = df[cols].transform(lambda x: x.where(x.ne(x.shift()), ''))
df:
Name idtag Size frq
0 Apple 123 Medium 20
1 Small 10
2 Small 5
3 Grapes 875 Small 50
4 Small 60
5 Medium 80
6 Mango 8894 Medium 30
7 Small 25
8 Small 20
示例代码
import pandas as pd
data = {'Name': ['Apple', 'Apple', 'Apple', 'Grapes', 'Grapes', 'Grapes', 'Mango', 'Mango', 'Mango'], 'idtag': [123, 123, 123, 875, 875, 875, 8894, 8894, 8894], 'Size': ['Medium', 'Small', 'Small', 'Small', 'Small', 'Medium', 'Medium', 'Small', 'Small'], 'frq': [20, 10, 5, 50, 60, 80, 30, 25, 20]}
df = pd.DataFrame(data)