pandas 如何分割字符的实现方法

  • Post category:Python

下面我将为你详细讲解 pandas 如何分割字符的实现方法,并且配合两个具体的示例进行说明。

1. 利用 str.split() 方法实现字符串分割

在 pandas 中,可以使用 str.split() 方法来将一列或多列数据按照指定的分隔符进行分割成多个子串,该方法返回一个新的 DataFrame 或 Series 对象,对象中每个元素都是一个 List。以下是使用示例:

import pandas as pd

data = {'Name': ['Tom,Amy', 'Tony,Julia', 'John,Mike'],
        'Age': [18, 20, 22]}

df = pd.DataFrame(data)
df['Name'] = df['Name'].str.split(',')
print(df)

运行以上代码,输出结果如下:

          Name  Age
0    [Tom, Amy]   18
1  [Tony, Julia]  20
2   [John, Mike]  22

如上所述,str.split() 方法将 Name 列的数据按逗号 , 进行分割,并存储为多个子串的 List 形式,替换掉了原始数据。

也可以指定分割次数来控制子串数量:

import pandas as pd

data = {'Name': ['Tom,Amy,Lucy', 'Tony,Julia,Sophie,Alice', 'John,Mike']}

df = pd.DataFrame(data)
df['Name'] = df['Name'].str.split(',', 2)
print(df)

运行以上代码,会输出以下结果:

                         Name
0                [Tom, Amy, Lucy]
1  [Tony, Julia, Sophie,Alice]
2                  [John, Mike]

尝试一下将 split() 方法的第二个参数变为不同的整数,观察结果变化。

2. 使用 str.extract() 和正则表达式分割字符串

在 pandas 中,我们还可以使用 str.extract() 方法根据正则表达式来进行字符串的分割,该方法会返回一个新的 DataFrame 或 Series 对象,对象中每个元素都是一个字符串。以下是示例:

import pandas as pd

data = {'Name': ['Tom', 'Tom, Amy', 'Tony, Julia, Sophie,Alice', 'John,Mike', 'John,Mike,Lisa'],
        'Age': [18, 20, 22, 24, 26]}

df = pd.DataFrame(data)
df[['First_Name', 'Second_Name']] = df['Name'].str.extract(r'(\w+),?\s*(\w+)?')
print(df)

运行以上代码,输出结果如下:

                      Name  Age First_Name Second_Name
0                      Tom   18        Tom        NaN
1                  Tom, Amy   20        Tom         Amy
2  Tony, Julia, Sophie,Alice   22       Tony       Julia
3                 John,Mike   24       John        Mike
4             John,Mike,Lisa   26       John        Mike

如上所述,我们使用了正则表达式 r'(\w+),?\s*(\w+)?' 来匹配姓名列中的字符串,并且将匹配结果分别存储在了 First_NameSecond_Name 两列中。在正则表达式中,\w+ 匹配一个或多个字母数字字符,, 匹配英文逗号,? 匹配前一项零次或一次,\s 匹配一个空白字符。

试着更改正则表达式或者要匹配的列名,观察输出结果。

总结

以上就是使用 pandas 分割字符的两种方法,分别是使用 str.split()str.extract() 方法。需要注意的是,使用正则表达式来处理字符串可以让你的代码更加灵活和通用,但如果正则表达式过于复杂会影响代码的运行效率。因此,在实现字符串分割时,需要根据情况选择合适的方法。