Yêu cầu Mar 4th, 2020 1:41 p.m. 229 0 3
  • 229 0 3
0

ghi dữ liệu

Chia sẻ
  • 229 0 3

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


Đã trả lời Mar 6th, 2020 8:59 a.m.
Đã được chấp nhận
+1

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.

Chia sẻ
Avatar Thanh Mai @maint3991
Mar 14th, 2020 1:51 a.m.

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

Mar 14th, 2020 6:26 a.m.

@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.

Avatar Thanh Mai @maint3991
Mar 14th, 2020 8:14 a.m.

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 à

Mar 14th, 2020 9:03 a.m.

@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/

Đã trả lời Mar 4th, 2020 1:47 p.m.
0

Bạn thử mở file mới với modeappend xem sao 😃

writer = ExcelWriter('VFdsdoichieu.xlsx', mode='a')
Chia sẻ
Avatar Thanh Mai @maint3991
Mar 4th, 2020 3:02 p.m.

Append mode is not supported with xlsxwriter! bao loi bạn a

Đã trả lời Mar 4th, 2020 3:28 p.m.
0

Tệp dữ liệu cuối có bắt buộc là xlsx hay chỉ cần mở được bằng excel

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí