Tôi không chắc bạn đang làm gì với chế độ tệp 'A+R+B' và đọc và ghi vào cùng một tệp, vì vậy sẽ không cung cấp đoạn mã hoàn chỉnh, nhưng đây là một phương thức đơn giản để bỏ qua bất kỳ dòng nào chứa một byte nul trong chúng trong một tệp bạn đang đọc, cho dù đó là lần cuối cùng, đầu tiên hay một ở giữa đang được đọc.
Bí quyết là nhận ra rằng các tài liệu nói rằng đối số CSVFile cho
dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
7 "có thể là bất kỳ đối tượng nào hỗ trợ giao thức iterator và trả về một chuỗi mỗi lần phương thức dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
8 của nó được gọi." Điều này có nghĩa là bạn có thể thay thế đối số tệp trong cuộc gọi bằng hàm lặp bộ lọc đơn giản được xác định theo cách này:def filter_nul_byte_lines[a_file]:
for line in a_file:
if '\x00' not in line:
yield line
và sử dụng nó theo cách tương tự như thế này:
dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
Điều này sẽ khiến bất kỳ dòng nào có byte nul trong chúng bị bỏ qua trong khi đọc tệp. Ngoài ra, kỹ thuật này hoạt động trực tiếp vì mỗi dòng được đọc, vì vậy nó không yêu cầu đọc toàn bộ tệp vào bộ nhớ cùng một lúc hoặc tiền xử lý trước.
- Người bắt đầu
- 5 trả lời
Hello!
Chúng tôi có một phần mềm trong đó chúng tôi xuất dữ liệu hàng ngày mỗi ngày một lần vào thư mục Google Drive & NBSP; và nhập nó vào CSV bằng cách sử dụng Zapier Formatter. & nbsp; sau đó chúng tôi thực hiện một số tính toán và gửi dữ liệu đó đến asana.
Chúng tôi đã có thể tạo ra một số zaps tuyệt vời hoạt động trong quá trình thử nghiệm, nhưng khi chúng tôi bật ZAP, chúng tôi sẽ chạy vào một vấn đề. & nbsp; Trong quá trình thử nghiệm, ZAP chỉ kiểm tra 50 hàng của CSV. & nbsp; Các báo cáo của chúng tôi xảy ra là khoảng 53 hàng hoặc lâu hơn. Khi ZAP được bật, nó xử lý toàn bộ.
Vấn đề chính là dòng cuối cùng của tệp CSV luôn có tổng số dữ liệu trên đó. & nbsp; Tôi có thể giải quyết tất cả các vấn đề của mình nếu tôi có thể loại bỏ dòng cuối cùng của CSV trong tổng số hoặc thậm chí lọc/xóa mục cuối cùng trong mỗi cột tôi đang làm việc.
Dưới đây là ảnh chụp màn hình của tệp CSV. Hàng nổi bật là một trong những tôi đang cố gắng loại bỏ.
Thanks!
Bài đăng này đã được đóng cho bình luận. Vui lòng tạo một bài đăng mới nếu bạn cần trợ giúp hoặc có một câu hỏi về chủ đề này.
Tôi chỉ đọc trong toàn bộ tệp với các bản tin [], bật ra hàng cuối cùng và sau đó viết nó bằng mô -đun CSVimport csv
f = open["summary.csv", "r+w"]
lines = f.readlines[]
lines = lines[: -1]
cWriter = csv.writer[f, delimiter = ',']
for line in lines:
cWriter.writerow[line]
Điều này sẽ hoạt động
import csv f = open['Pnl.csv', "r+"] lines = f.readlines[] lines.pop[] f = open['Pnl.csv', "w+"] f.writelines[lines]
Bí quyết là nhận ra rằng các tài liệu nói rằng đối số CSVFile cho
dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
7 "có thể là bất kỳ đối tượng nào hỗ trợ giao thức iterator và trả về một chuỗi mỗi lần phương thức dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
8 của nó được gọi." Điều này có nghĩa là bạn có thể thay thế đối số tệp trong cuộc gọi bằng hàm lặp bộ lọc đơn giản được xác định theo cách này:def filter_nul_byte_lines[a_file]: for line in a_file: if '\x00' not in line: yield line
và sử dụng nó theo cách tương tự như thế này:
dcsv = open['Pnl.csv', 'rb+'] cReader = csv.reader[filter_nul_byte_lines[dcsv]] for row in cReader: print row
Gợi ý: 2
Để xóa hàng cuối cùng khỏi DataFrame, chỉ cần chọn các hàng từ hàng số 0 đến cuối-1 và chọn tất cả các cột. Để biểu thị số chỉ mục của hàng cuối cùng, chúng tôi đã sử dụng -1 [lập chỉ mục âm]. Khi lập chỉ mục bắt đầu từ 0, vì vậy để chọn tất cả các hàng sau khi sử dụng cuối cùng-> [: -1], tức là từ hàng ngày 0 đến thứ 2 hàng cuối cùng. Để chọn tất cả các cột, sử dụng các giá trị mặc định, tức là [:] tức là, ROW_END: Chỉ mục hàng/vị trí từ nơi nó sẽ kết thúc lựa chọn, tức là chọn cho đến ROW_END-1. Mặc định là cho đến hàng cuối cùng của DataFrame., COL_END: Chỉ mục/Vị trí cột từ nơi nó sẽ kết thúc lựa chọn, tức là chọn Till-1. Mặc định là cho đến cột cuối cùng của DataFrame., Chúng tôi đã tìm nạp tất cả các tên của Chỉ mục DataFrame dưới dạng chuỗi và chuyển tên hàng/chỉ mục cuối cùng dưới dạng đối số chỉ mục trong hàm thả [], do đó, nó đã xóa hàng cuối cùng của DataFrame.
Trong Pandas, DataFrame cung cấp một ILOC thuộc tính, để chọn một phần của DataFrame bằng cách sử dụng lập chỉ mục dựa trên vị trí. Phần được chọn này có thể là một vài cột hoặc hàng. Chúng ta có thể sử dụng thuộc tính này để chọn tất cả các hàng ngoại trừ hàng cuối cùng và sau đó gán lại các hàng đã chọn cho biến ban đầu. Nó sẽ cho một hiệu ứng mà chúng tôi đã xóa hàng cuối cùng khỏi DataFrame. Ví dụ,iloc, to select a portion of the dataframe using position based indexing. This selected portion can be few columns or rows . We can use this attribute to select all the rows except the last one and then assign back the selected rows to the original variable. It will give an effect that we have deleted the last row from the dataframe. For example,
# Drop last row # by selecting all rows except last row df = df.iloc[: -1,: ]
Cú pháp của dataFrame.iloc [] giống như,
df.iloc[row_start: row_end, col_start, col_end]
Để xóa hàng cuối cùng khỏi DataFrame, chỉ cần chọn các hàng từ hàng số 0 đến cuối-1 và chọn tất cả các cột. Để biểu thị số chỉ mục của hàng cuối cùng, chúng tôi đã sử dụng -1 [lập chỉ mục âm]. Khi lập chỉ mục bắt đầu từ 0, vì vậy để chọn tất cả các hàng sau khi sử dụng cuối cùng-> [: -1], tức là từ hàng ngày 0 đến thứ 2 hàng cuối cùng. Để chọn tất cả các cột, sử dụng các giá trị mặc định, tức là [:] tức là.
Gợi ý: 3
1 tuần trước ngày 06 tháng 3 năm 2008 & nbsp; · Tùy chọn. Tôi sẽ sử dụng tệp văn bản đọc. Bạn có thể nhấp chuột phải vào nó và bảo nó đọc các dòng. Sau đó xóa khỏi mảng. Để chỉ mục và độ dài không mong muốn và nó sẽ xóa mục cuối cùng [tôi nhận thấy mã của bạn đang xóa dòng thứ hai]. Sau đó mở tệp một lần nữa để thay thế hoặc tạo và ghi dữ liệu của bạn. , Tôi chỉ đọc trong toàn bộ tệp với các readlines [], bật ra hàng cuối cùng và sau đó viết nó bằng mô-đun CSV, [0 chỉ mục sẽ bị xóa như trong lập chỉ mục Python bắt đầu từ 0]: để xóa hàng cuối cùng bằng cách sử dụng cắt lát. Vì cột chỉ mục theo mặc định là số, do đó nhãn chỉ mục cũng sẽ là số nguyên. , 1 Nhập thư viện 2 Tải bộ dữ liệu trong Python 3 để loại bỏ hàng đầu tiên bằng cách cắt lát. Vì cột chỉ mục theo mặc định là số, do đó nhãn chỉ mục cũng sẽ là số nguyên.
dcsv = open['PnL.csv', 'a+r+b'] cWriter = csv.writer[dcsv, delimiter = ' '] cReader = csv.reader[dcsv] for row in cReader: cWriter.writerow[row[: -1]]
import csv f = open["summary.csv", "r+w"] lines = f.readlines[] lines = lines[: -1] cWriter = csv.writer[f, delimiter = ','] for line in lines: cWriter.writerow[line]
dcsv = open['PnL.csv', 'a+r+b'] cWriter = csv.writer[dcsv, delimiter = ' '] cReader = csv.reader[dcsv] for row in cReader: cWriter.writerow[row[: -1]]
import csv f = open["summary.csv", "r+w"] lines = f.readlines[] lines = lines[: -1] cWriter = csv.writer[f, delimiter = ','] for line in lines: cWriter.writerow[line]
dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
2dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
3Gợi ý: 4
Bằng cách sử dụng dataFrame.iloc [], bạn có thể thả các hàng từ DataFrame và sử dụng -1 để thả hàng cuối cùng. Ví dụ: sử dụng df.iloc [:-1 ,:] để chọn tất cả các hàng ngoại trừ hàng cuối cùng và sau đó gán lại cho biến ban đầu mà lý tưởng là bỏ hàng cuối cùng từ DataFrame., Trong bài viết này, bạn đã học được cách thả Dữ liệu hàng cuối cùng của gấu trúc DataFrame bằng cách sử dụng dataFrame.iloc [], dataFrame.drop [] và dataFrame.head [] hàm với các ví dụ. và phương thức đầu []. Trong bài viết này, tôi sẽ giải thích cách xóa/thả hàng dữ liệu cuối cùng khỏi Pandas DataFrame với các ví dụ., Nếu bạn đang vội, dưới đây là một số ví dụ nhanh về cách thả/xóa hàng cuối cùng khỏi Pandas DataFrame.
Nếu bạn đang vội, dưới đây là một số ví dụ nhanh về cách thả/xóa hàng cuối cùng khỏi Pandas DataFrame.
dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
42._
dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
5Năng suất dưới đầu ra.
dcsv = open['Pnl.csv', 'rb+']
cReader = csv.reader[filter_nul_byte_lines[dcsv]]
for row in cReader:
print row
6