例如,我有一个数据框
df = pd.DataFrame({'key': ['one', 'three', 'two', 'one'], 'B': [1, 2, 3, 4], 'C': [-1, 8, 9, 11]})
我想要Excel电子表格中的输出 - 按列键排序的行顺序,仅为每个唯一列键值输出第一列键,在不同键值之间添加额外的空行 - 列键和B之间的空列
这就是我想要的输出:
Key B C
One 1 -1
4 11
Three 2 8
Two 3 9
实现这一目标最紧凑的方法是什么?感谢。
答案 0 :(得分:0)
明白你的意思。
但这有点奇怪,你为什么不先把你的收藏过滤到正确的?
建议您使用xlwt
模块,首先调整您的收藏集,然后执行merge
以使您的xls文件正确无误。
#!/usr/bin/env python
# encoding: utf-8
import xlwt
df = {'key': ['one', 'three', 'two', 'one'], 'B': [1, 2, 3, 4], 'C': [-1, 8, 9, 11]}
# filter your collection, let the same key to be close for easy merging
df['key'].sort()
df['B'][1], df['B'][3] = df['B'][3], df['B'][1]
df['C'][1], df['C'][3] = df['C'][3], df['C'][1]
current_file = xlwt.Workbook()
table = current_file.add_sheet('sheet1', cell_overwrite_ok=True)
table.write(0, 0, 'key')
for title_index, text in enumerate(df['key']):
table.write(title_index+1, 0, text)
df.pop('key')
merging_list = []
for index, letter in enumerate(df.keys()):
table.write(0, index+1, letter)
nr = 1
for content in df[letter]:
table.write(nr, index+1, content)
nr += 1
# you can merge more if you have multiple duplicate keys
# but do not foget to remember their indexes
table.merge(1, 2, 0, 0)
current_file.save('/tmp/test.xls')
然后检查您的文件/tmp/test.xls
: