我的土豆在哪里 2022-09-25 12:34 采纳率: 42.9%
浏览 16

筛选一个工作簿中的所有工作表数据pandas.concat 用法

筛选一个工作簿中的所有工作表数据,原始代码如下:

import xlwings as xw
import pandas as pd

app = xw.App(visible=False, add_book=False)
workbook = app.books.open('f:\list\筛选表 - 副本.xlsx')
worksheet = workbook.sheets

table = pd.DataFrame()
for i, j in enumerate(worksheet):
values = j.range('A1').options(pd.DataFrame, header=1, index=False, expand='table').value
data = values.reindex(columns=['采购物品', '采购日期', '采购数量', '采购金额'])
table = table.append(data, ignore_index=True)
table = table.groupby('采购物品')
new_workbook = xw.books.add()

for idx, group in table:
new_worksheet = new_workbook.sheets.add(idx)
new_worksheet['A1'].options(index=False).value = group
last_cell = new_worksheet['A1'].expand('table').last_cell
last_row = last_cell.row
last_column = last_cell.column
last_column_letter = chr(64 + last_column)
sum_cell_name = '{}{}'.format(last_column_letter, last_row + 1)
sum_last_row_name = '{}{}'.format(last_column_letter, last_row)
formula = '=SUM({}2:{})'.format(last_column_letter, sum_last_row_name)
new_worksheet[sum_cell_name].formula = formula
new_worksheet.autofit()

new_workbook.save('采购分类表.xlsx')
workbook.close()
app.quit()

运行后出现FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.table = table.append(data, ignore_index=True)
因此我将12行的table = table.append(data, ignore_index=True)替换为table = pd.concat([data], ignore_index=True),但是运行没报错但是表格没有发生任何改变 ,也就是没效果。请问,我应该怎么修改。谢谢!!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-27 21:59
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月25日