2014-11-06 15 views
6

Tôi có một khung dữ liệu gấu trúc. Một trong các cột của tôi chỉ nên nổi. Khi tôi cố gắng chuyển đổi cột đó thành phao nổi, tôi được cảnh báo rằng có các chuỗi trong đó. Tôi muốn xóa tất cả các hàng có giá trị trong cột này là các chuỗi ...Xóa các hàng có loại giá trị cột là chuỗi Pandas

Trả lời

10

Sử dụng convert_objects với param convert_numeric=True này sẽ ép buộc bất kỳ giá trị không phải là số để NaN:

In [24]: 

df = pd.DataFrame({'a': [0.1,0.5,'jasdh', 9.0]}) 
df 
Out[24]: 
     a 
0 0.1 
1 0.5 
2 jasdh 
3  9 
In [27]: 

df.convert_objects(convert_numeric=True) 
Out[27]: 
    a 
0 0.1 
1 0.5 
2 NaN 
3 9.0 
In [29]: 

Bạn có thể sau đó thả chúng:

df.convert_objects(convert_numeric=True).dropna() 
Out[29]: 
    a 
0 0.1 
1 0.5 
3 9.0 

CẬP NHẬT

Kể từ phiên bản 0.17.0 này phương pháp hiện tại là deprecated và bạn cần t o sử dụng to_numeric không may này hoạt động trên một Series chứ không phải là toàn bộ một df để mã tương đương bây giờ là:

df.apply(lambda x: pd.to_numeric(x, errors='coerce')).dropna() 
+0

Cảm ơn cho điều này! My dataframe có nhiều cột. Một số cột cần phải có chuỗi. Ví dụ, tôi có một cột 'tên' và một cột 'tuổi'. Cột 'tuổi' cần phải là số. Tôi đã thử: df.age.convert_objects (convert_numeric = True) và có đối tượng 'Series' không có thuộc tính 'convert_objects'. – user3347713

+0

Bạn cần phải làm 'df [['tuổi']]. Convert_objects (convert_numeric = True)' trong trường hợp đó – EdChum

+0

Oh tôi hiểu, vì vậy [['tuổi']] chọn ra một cột trong df. Rất hữu ích. Tuy nhiên, tôi nhận được một TypeError: convert_objects() có một đối số từ khóa không mong muốn 'convert_numeric. Tôi vừa kiểm tra tài liệu và 'convert_numeric = True' là đối số chính xác. Suy nghĩ? – user3347713

0

Bạn có thể tìm thấy loại dữ liệu của cột từ thuộc tính dtype.kind. Một cái gì đó như df[col].dtype.kind. Xem the numpy docs để biết thêm chi tiết. Chuyển giao khung dữ liệu để chuyển từ chỉ mục sang cột.

Các vấn đề liên quan