Hướng dẫn how do i extract numbers from a column in python? - làm cách nào để trích xuất số từ một cột trong python?

Cho khung dữ liệu sau:

Show
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':['1a',np.nan,'10a','100b','0b'],
                   })
df

    A
0   1a
1   NaN
2   10a
3   100b
4   0b

Tôi muốn trích xuất các số từ mỗi ô (nơi chúng tồn tại). Kết quả mong muốn là:

    A
0   1
1   NaN
2   10
3   100
4   0

Tôi biết nó có thể được thực hiện với str.extract, nhưng tôi không chắc làm thế nào.

Hướng dẫn how do i extract numbers from a column in python? - làm cách nào để trích xuất số từ một cột trong python?

Jon Clements ♦

135K32 Huy hiệu vàng242 Huy hiệu bạc275 Huy hiệu Đồng32 gold badges242 silver badges275 bronze badges

Đã hỏi ngày 7 tháng 6 năm 2016 lúc 15:31Jun 7, 2016 at 15:31

Hướng dẫn how do i extract numbers from a column in python? - làm cách nào để trích xuất số từ một cột trong python?

Bữa tiệc khiêu vũDance Party

3.24510 Huy hiệu vàng39 Huy hiệu bạc65 Huy hiệu Đồng10 gold badges39 silver badges65 bronze badges

Cung cấp cho nó một nhóm chụp regex:

df.A.str.extract('(\d+)')

Mang đến cho bạn:

0      1
1    NaN
2     10
3    100
4      0
Name: A, dtype: object

Đã trả lời ngày 7 tháng 6 năm 2016 lúc 15:39Jun 7, 2016 at 15:39

Hướng dẫn how do i extract numbers from a column in python? - làm cách nào để trích xuất số từ một cột trong python?

Jon Clements ♦ Jon ClementsJon Clements

135K32 Huy hiệu vàng242 Huy hiệu bạc275 Huy hiệu Đồng32 gold badges242 silver badges275 bronze badges

5

Đã hỏi ngày 7 tháng 6 năm 2016 lúc 15:31

df = df.assign(A = lambda x: x['A'].str.extract('(\d+)'))

Bữa tiệc khiêu vũOct 30, 2020 at 0:06

Hướng dẫn how do i extract numbers from a column in python? - làm cách nào để trích xuất số từ một cột trong python?

3.24510 Huy hiệu vàng39 Huy hiệu bạc65 Huy hiệu ĐồngMehdi Golzadeh

Cung cấp cho nó một nhóm chụp regex:1 gold badge15 silver badges26 bronze badges

df.A.str.extract('(\d+)')

df.A.str.extract('(^\d*)')

Mang đến cho bạn:Jul 7, 2017 at 0:32

Đã trả lời ngày 7 tháng 6 năm 2016 lúc 15:39

>>> df
        A
0      1a
1      b2
2    a1b2
3  1a2b3c
>>> df['A'] = df['A'].str.replace('\D+', '')
0      1
1      2
2     12
3    123

Jon Clements ♦ Jon Clements

U có thể thay thế cột của bạn bằng kết quả của bạn bằng hàm "gán":

Đã trả lời ngày 30 tháng 10 năm 2020 lúc 0:06Sep 28 at 8:15

Mehdi Golzadehmehdi GolzadehRostan

2.5541 Huy hiệu vàng15 Huy hiệu bạc26 Huy hiệu đồng8 silver badges24 bronze badges

Hướng dẫn how do i extract numbers from a column in python? - làm cách nào để trích xuất số từ 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 i extract numbers from a column in python? - làm cách nào để trích xuất số từ 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 i extract numbers from a column in python? - làm cách nào để trích xuất số từ một cột trong python?

Phá vỡ

    A
0   1
1   NaN
2   10
3   100
4   0
5

Đầ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.

    A
0   1
1   NaN
2   10
3   100
4   0
6

Sử dụng tất cả, chúng ta có thể trả về mọi số từ chuỗi.

    A
0   1
1   NaN
2   10
3   100
4   0
7 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 i extract numbers from a column in python? - làm cách nào để trích xuất số từ một cột trong python?

    A
0   1
1   NaN
2   10
3   100
4   0
8

Đ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
0   1
1   NaN
2   10
3   100
4   0
9

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ị

df.A.str.extract('(\d+)')
0 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ị
df.A.str.extract('(\d+)')
0 đều dẫn đến giá trị
df.A.str.extract('(\d+)')
0.

df.A.str.extract('(\d+)')
3

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ố

df.A.str.extract('(\d+)')
4 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.

df.A.str.extract('(\d+)')
5

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!