41
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Cho khung dữ liệu sau:
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.
Jon Clements ♦♦
135K32 Huy hiệu vàng240 Huy hiệu bạc273 Huy hiệu Đồng32 gold badges240 silver badges273 bronze badges
Đã hỏi ngày 7 tháng 6 năm 2016 lúc 15:31Jun 7, 2016 at 15:31
Bữa tiệc khiêu vũDance Party
3.18510 Huy hiệu vàng38 Huy hiệu bạc64 Huy hiệu đồng10 gold badges38 silver badges64 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
Jon Clements ♦ Jon Clements♦Jon Clements
135K32 Huy hiệu vàng240 Huy hiệu bạc273 Huy hiệu Đồng32 gold badges240 silver badges273 bronze badges
5
Đã hỏi ngày 7 tháng 6 năm 2016 lúc 15:31
df.A.str.extract['[^\d*]']
Bữa tiệc khiêu vũJul 7, 2017 at 0:32
3.18510 Huy hiệu vàng38 Huy hiệu bạc64 Huy hiệu đồng
df = df.assign[A = lambda x: x['A'].str.extract['[\d+]']]
Cung cấp cho nó một nhóm chụp regex:Oct 30, 2020 at 0:06
Mang đến cho bạn:Mehdi Golzadeh
Đã trả lời ngày 7 tháng 6 năm 2016 lúc 15:391 gold badge15 silver badges26 bronze badges
Jon Clements ♦ Jon Clements
>>> 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
Để trả lời câu hỏi của @steven G trong bình luận ở trên, điều này sẽ hoạt động:
Đã trả lời ngày 7 tháng 7 năm 2017 lúc 0:32
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":Sep 28 at 8:15
Đã trả lời ngày 30 tháng 10 năm 2020 lúc 0:06Rostan
Mehdi Golzadehmehdi Golzadeh8 silver badges23 bronze badges
Xem xét các dữ liệu sau:
A
0 1
1 NaN
2 10
3 100
4 0
3 A
0 1
1 NaN
2 10
3 100
4 0
4 A
0 1
1 NaN
2 10
3 100
4 0
5Để trích xuất số từ cột
A
0 1
1 NaN
2 10
3 100
4 0
6: A
0 1
1 NaN
2 10
3 100
4 0
3 A
0 1
1 NaN
2 10
3 100
4 0
8 A
0 1
1 NaN
2 10
3 100
4 0
5Ở đây, chuỗi đối số là một regex:
0 đại diện cho một sốdf.A.str.extract['[\d+]']
1 cho biết nhóm bạn muốn trích xuấtdf.A.str.extract['[\d+]']
Nếu bạn muốn một loạt thay vì DataFrame:
A
0 1
1 NaN
2 10
3 100
4 0
3df.A.str.extract['[\d+]']
3 A
0 1
1 NaN
2 10
3 100
4 0
5