将python pandas dataframe保存到Excel时创建空行/列

时间:2015-04-26 14:40:31

标签: python excel pandas

例如,我有一个数据框

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

实现这一目标最紧凑的方法是什么?感谢。

1 个答案:

答案 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

enter image description here