Pandas:如何获取整列的子字符串


您可以使用以下基本语法来获取 pandas DataFrame 中整列的子字符串:

 df[' some_substring '] = df[' string_column ']. str [1:4]

此特定示例创建一个名为some_substring的新列,其中包含string_column中位置 1 到 4 的字符。

以下示例展示了如何在实践中使用此语法。

示例:获取 Pandas 中整列的子字符串

假设我们有以下 pandas DataFrame,其中包含有关各个篮球队的信息:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['Mavericks', 'Warriors', 'Rockets', 'Hornets', 'Lakers'],
                   ' points ': [120, 132, 108, 118, 106]})

#view DataFrame
print (df)

        team points
0 Mavericks 120
1 Warriors 132
2 Rockets 108
3 Hornets 118
4 Lakers 106

我们可以使用以下语法创建一个新列,其中包含位置 1 和 4 之间团队列中的字符:

 #create column that extracts characters in positions 1 through 4 in team column
df[' team_substring '] = df[' team ']. str [1:4]

#view updated DataFrame
print (df)

        team points team_substring
0 Mavericks 120 ave
1 Warriors 132 arr
2 Rockets 108 ock
3 Hornets 118 orn
4 Lakers 106 ake

名为team_substring的新列包含 team 列中位置 1 和 4 之间的字符。

请注意,如果您尝试使用此语法从数字列中提取子字符串,您将收到错误:

 #attempt to extract characters in positions 0 through 2 in points column
df[' points_substring '] = df[' points ']. str [:2]

AttributeError: Can only use .str accessor with string values!

相反,您必须首先使用astype(str)将数字列转换为字符串:

 #extract characters in positions 0 through 2 in points column
df[' points_substring '] = df[' points ']. astype (str). str [:2]

#view updated DataFrame
print (df)

        team points points_substring
0 Mavericks 120 12
1 Warriors 132 13
2 Rockets 108 10
3 Hornets 118 11
4 Lakers 106 10

这次我们能够成功地从列中提取位置 0 到 2 的字符,因为我们首先将它们转换为字符串。

其他资源

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

Pandas:检查字符串是否包含多个子字符串
Pandas:如何将字符串添加到列中的每个值
Pandas:如何选择包含特定字符串的列

添加评论

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