ghi dữ liệu
Cả nhà cho e hỏi: e dử dụng pandas để lấy dữ liệu từ 1 file và ghi sang 1 file mới.nhưng khi ghi thì dữ liệu file mới mất hết.cả nhà có cách nào sử dụng writer mà không làm mất dữ liệu của file mới ko ạ
import pandas as pd
import matplotlib.pyplot as plt
from pandas import ExcelWriter
from pandas import ExcelFile
import numpy as np
from openpyxl import load_workbook
a = pd.read_excel('dccn.xlsm',header=9,encoding='utf-8')
b2= pd.DataFrame(pd.pivot_table(a,index=['Mã KH','Tỉnh','Đơn vị','Tên kh'])
writer = ExcelWriter('VFdsdoichieu.xlsx')
b2.to_excel(writer,sheet_name='sheet1',index=True)
3 CÂU TRẢ LỜI
Như bạn bên trên có bảo, bạn có thể sử dụng mode append của ExcelWriter.
writer = ExcelWriter('VFdsdoichieu.xlsx', mode='a')
Đây là tính năng mới, pandas support từ version 0.24.0 nên nếu bạn thấy báo lỗi thì bạn hãy cập nhật bản mới nhất của pandas.
pip install pandas --upgrade
Một cách khác nếu bạn không muốn cập nhật bản mới của pandas thì có thể đọc cả 2 file excel cũ và mới lên, sử dụng
pd.concat([df1, df2])
để concatenate 2 dataframe lại rồi lưu ra file mới.
nếu sử đụng mode append thì mình chạy n lần sẽ tạo ra n file mới khác nhau.,inh đây muốn ghi sheet mình chỉ đinh sẵn ý ban giông kiều refresh dữ liệu thui
@maint3991 Mode append là ghi thêm dữ liệu vào dataframe hiện có mà bạn đúng kiểu refresh dữ liệu luôn đó, còn tạo ra nhiều file mới khác nhau thì chắc do cách bạn lưu file thôi chứ mode này là chuẩn rồi.
import pandas as pd import matplotlib.pyplot as plt
from pandas import ExcelWrite
from pandas import ExcelFile
import numpy as np
a = pd.read_excel('dccn.xlsm',header=9,encoding='utf-8') print(a.columns)
b2= pd.DataFrame(pd.pivot_table(a,index=['Mã KH','Tỉnh','Đơn vị','Tên kh'],values=['Số dư'],aggfunc='sum'))
writer = ExcelWriter('abc.xlsx',engine='openpyxl', model='a')
b2.to_excel(writer,sheet_name='another sheet',index=True)
writer.save()
Mình viết lệnh như trên.Vẫn xóa các sheet khách b à
@maint3991 Tức là bạn đang có 1 file excel với nhiều sheet, bạn cần update dữ liệu cho 1 sheet và dữ nguyên dữ liệu trong các sheet còn lại đúng không? Hình như hôm trước mình hiểu nhầm ý bạn hỏi ) Bạn tìm hiểu về thư viện này nhé http://zetcode.com/python/openpyxl/
Bạn thử mở file mới với mode
là append
xem sao
writer = ExcelWriter('VFdsdoichieu.xlsx', mode='a')
Append mode is not supported with xlsxwriter! bao loi bạn a
Tệp dữ liệu cuối có bắt buộc là xlsx hay chỉ cần mở được bằng excel
- Nếu chỉ cần mở bằng excel được thì bạn lưu bằng file csv cho đơn giản
- Bắt buộc xlsx thì bạn tham khảo link https://medium.com/better-programming/using-python-pandas-with-excel-d5082102ca27#9cd6