如何从 pandas 中的字符串中提取数字


您可以使用以下基本语法从 pandas 中的字符串中提取数字:

 df[' my_column ']. str . extract (' (\d+) ')

这种特殊的语法会将每个字符串中的数字提取到 pandas DataFrame 中名为my_column的列中。

注意:使用正则表达式时, \d表示“任何数字”, +表示“一个或多个”。

下面的例子展示了如何在实际中使用这个功能。

示例:从 Pandas 中的字符串中提取数字

假设我们有以下 pandas DataFrame,其中包含有关各种产品销售的信息:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' product ': ['A33', 'B34', 'A22', 'A50', 'C200', 'D7', 'A9', 'A13'],
                   ' sales ': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  product sales
0 A33 18
1 B34 22
2 A22 19
3 A50 14
4 C200 14
5 D7 11
6 A9 20
7 A13 28

假设我们要从产品列中提取每个字符串的编号。

我们可以使用以下语法来做到这一点:

 #extract numbers from strings in 'product' column
df[' product ']. str . extract (' (\d+) ')

	0
0 33
1 34
2 22
3 50
4,200
5 7
6 9
7 13

结果是一个仅包含Product列每行中的数字的 DataFrame。

例如:

  • 该公式从第一行的字符串A33中提取33
  • 该公式从第一行的字符串B34中提取34
  • 该公式从第一行的字符串A22中提取22

等等。

如果需要,您还可以将这些数值存储在 DataFrame 的新列中:

 #extract numbers from strings in 'product' column and store them in new column
df[' product_numbers '] = df[' product ']. str . extract (' (\d+) ')

#view updated DataFrame
print (df)

  product sales product_numbers
0 A33 18 33
1 B34 22 34
2 A22 19 22
3 A50 14 50
4 C200 14,200
5 D7 11 7
6 A9 20 9
7 A13 28 13

名为product_numbers的新列仅包含产品列中每个字符串的数字。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

Pandas:如何根据字符串列对 DataFrame 进行排序
Pandas:如何从字符串中删除特定字符
Pandas:在DataFrame的所有列中搜索字符串

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注