Hướng dẫn how do you keep only numbers in a column in python? - làm cách nào để bạn chỉ giữ các số trong một cột trong python?

Tôi có một khung dữ liệu trông như thế này:

     A       B           C
1   red78   square    big235
2   green   circle    small123
3   blue45  triangle  big657

Tôi cần có khả năng xóa các ký tự không phải là số lượng khỏi tất cả các hàng trong cột C để khung dữ liệu của tôi trông giống như:

     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657

Tôi đã thử sử dụng các mục sau nhưng nhận được chuỗi dự kiến ​​hoặc bộ đệm:

import re
dfOutput.imgID = dfOutput.imgID.apply(re.sub('[^0-9]','', dfOutput.imgID), axis = 0)

Thay vào đó tôi nên làm gì?

Mã để tạo DataFrame:

dfObject = pd.DataFrame()
dfObject.set_value(1, 'A', 'red78')
dfObject.set_value(1, 'B', 'square')
dfObject.set_value(1, 'C', 'big235')
dfObject.set_value(2, 'A', 'green')
dfObject.set_value(2, 'B', 'circle')
dfObject.set_value(2, 'C', 'small123')
dfObject.set_value(3, 'A', 'blue45')
dfObject.set_value(3, 'B', 'triangle')
dfObject.set_value(3, 'C', 'big657')

Hướng dẫn how do you keep only numbers in a column in python? - làm cách nào để bạn chỉ giữ các số trong một cột trong python?

Trong bài đăng này, tôi sẽ chỉ cho bạn cách trích xuất mỗi số từ một chuỗi trong Python bằng cách sử dụng các biểu thức thông thường.

Trích xuất số điện thoại hoặc đơn giản là loại bỏ các ký hiệu khỏi các số là hai lý do phổ biến nhất mà tôi đang tìm cách loại bỏ mọi thứ trừ các số thực tế từ cột chuỗi Python Pandas.

Xem xét các dữ liệu sau:

import pandas as pd
df = pd.DataFrame(['+1-555-555-5555','+1 (123) 456 7899', 'Here is my number 1-555-555-6666',123456789],columns=['Numbers and Text'])
df

Hướng dẫn how do you keep only numbers in a column in python? - làm cách nào để bạn chỉ giữ các số trong một cột trong python?

Đây là cách bạn có thể chạy để trả về một cột mới chỉ với các số:

df['Numbers Only'] = df['Numbers and Text'].astype('str').str.extractall('(\d+)').unstack().fillna('').sum(axis=1).astype(int)

Hướng dẫn how do you keep only numbers in a column in python? - làm cách nào để bạn chỉ giữ các số trong một cột trong python?

Phá vỡ

.astype('str')

Đầu tiên, chúng ta cần đảm bảo rằng toàn bộ cột là một chuỗi để áp dụng Regex. Bước này rất quan trọng nếu bạn có các loại dữ liệu hỗn hợp trong cột của mình.

.str.extractall('(\d+)')

Sử dụng tất cả, chúng ta có thể trả về mọi số từ chuỗi. (\d)+ sẽ tìm kiếm bất kỳ chữ số hoặc bất kỳ độ dài nào trong chuỗi.

Kết quả kết thúc là một khung dữ liệu dài hơn trong đó mọi trận đấu trở thành hàng riêng của nó trong một khung dữ liệu đa chỉ số.

Hướng dẫn how do you keep only numbers in a column in python? - làm cách nào để bạn chỉ giữ các số trong một cột trong python?

.unstack()

Điều này mang các số phù hợp vào cùng một hàng với chuỗi gốc. Mỗi nhóm sẽ ở trong một cột riêng biệt.

     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657
0

Vì một số chuỗi nhất định có thể có nhiều nhóm phù hợp hơn các chuỗi khác, nên có thể có các giá trị

     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657
1 trong khung dữ liệu của bạn. Bước này loại bỏ chúng bởi vì nếu không, bất kỳ hoạt động nào liên quan đến giá trị
     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657
1 đều dẫn đến giá trị
     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657
1.

     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657
4

Cuối cùng, để mang tất cả các số lại với nhau thành một ô, chúng ta có thể chạy một khoản tiền. Đối số

     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657
5 sẽ tổng hợp các giá trị hàng. Các nhóm được lưu trữ dưới dạng một chuỗi để nó không thêm các số nhưng sẽ kết hợp các số. Cột kết quả sẽ được lưu trữ dưới dạng kiểu dữ liệu float.

     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657
6

Bước cuối cùng này là tùy chọn nếu bạn không muốn số của bạn là một chiếc phao.

Suy nghĩ cuối cùng

Kiểm tra thêm các thủ thuật Python trong máy tính xách tay này & nbsp; colab & nbsp; hoặc trong các bài đăng gần đây của tôi & nbsp; python.

Cảm ơn vì đã đọc!