Tôi có khung dữ liệu gấu trúc được tạo từ tệp csv. Một cột của khung dữ liệu này chứa dữ liệu số ban đầu được truyền dưới dạng chuỗi. Hầu hết các mục nhập đều giống như số, nhưng một số có chứa các mã lỗi khác nhau không phải là số. Tôi không biết trước tất cả các mã lỗi có thể là bao nhiêu hoặc có bao nhiêu mã lỗi. Vì vậy, ví dụ, dataframe có thể trông giống như:có phương pháp nào để bỏ qua các hàng không chuyển đổi khi đúc một chuỗi gấu trúc từ str sang phao không?
[In 1]: df
[Out 1]:
data OtherAttr
MyIndex
0 1.4 aaa
1 error1 foo
2 2.2 bar
3 0.8 bar
4 xxx bbb
...
743733 BadData ccc
743734 7.1 foo
Tôi muốn đúc df.data
như một phao và vứt bỏ bất kỳ giá trị mà không chuyển đổi đúng cách. Có chức năng tích hợp cho điều này không? Một cái gì đó như:
df.data = df.data.astype(float, skipbad = True)
(Mặc dù tôi biết rằng đặc biệt sẽ không làm việc và tôi không thấy bất kỳ kwargs trong astype mà làm những gì tôi muốn)
Tôi đoán tôi có thể viết một hàm sử dụng try
và sau đó sử dụng gấu trúc apply
hoặc map
, nhưng điều đó có vẻ giống như một giải pháp không phù hợp. Đây phải là một vấn đề khá phổ biến, phải không?
Cảm ơn cho câu trả lời, Chỉ cần những gì tôi đang tìm kiếm. Một điểm tiếp theo nhỏ: nếu bạn có một kết hợp các kiểu đã có trong một cột (một số float, một số chuỗi) thì 'convert_objects' sẽ thất bại âm thầm. Tất nhiên, phản ứng hợp lý với điều đó là "không có sự pha trộn các loại đối tượng trong một cột!" – user2543645
_ "FutureWarning: convert_objects không được dùng nữa. Sử dụng trình chuyển đổi cụ thể kiểu dữ liệu pd.to_datetime, pd.to_timedelta và pd.to_numeric." _ – xtian