pandas 使用正则表达式将列表拆分为列

作者:编程家 分类: regex 时间:2025-06-26

使用正则表达式将列表拆分为列是一种常见的数据处理技巧,特别是在使用Python中的pandas库时。pandas是一个强大的数据分析工具,它提供了许多灵活的函数和方法,可以帮助我们高效地处理和分析数据。

在数据处理过程中,经常会遇到需要将一个包含多个值的列拆分为多个单独的列的情况。这种情况下,我们可以使用正则表达式来匹配和拆分文本,并将拆分后的结果存储到新的列中。

假设我们有一个包含多个值的列,如下所示:

import pandas as pd

# 创建示例数据

data = {'values': ['apple, orange', 'banana', 'grape, mango', 'watermelon']}

df = pd.DataFrame(data)

该列中的每个值由逗号分隔,我们希望将其拆分为两个单独的列。为了实现这个目标,我们可以使用pandas的`str.split()`函数,结合正则表达式来进行拆分。

# 使用正则表达式将列表拆分为列

df[['value1', 'value2']] = df['values'].str.split(r'\s*,\s*', expand=True)

在上述代码中,我们使用正则表达式`\s*,\s*`来匹配逗号前后的任意空格,并使用`str.split()`函数将列拆分为两个新的列。`expand=True`参数表示将拆分后的结果扩展为独立的列。

通过上述操作,我们成功将原始列拆分为两个新的列`value1`和`value2`,并将其添加到数据框中。现在,我们可以查看拆分后的结果:

print(df)

输出结果如下:

values value1 value2

0 apple, orange apple orange

1 banana banana None

2 grape, mango grape mango

3 watermelon watermelon None

可以看到,原始列中的每个值都被正确地拆分为了两个新的列。对于没有拆分结果的值,pandas会在新的列中填充`None`值。

案例代码:

import pandas as pd

# 创建示例数据

data = {'values': ['apple, orange', 'banana', 'grape, mango', 'watermelon']}

df = pd.DataFrame(data)

# 使用正则表达式将列表拆分为列

df[['value1', 'value2']] = df['values'].str.split(r'\s*,\s*', expand=True)

# 打印拆分后的结果

print(df)

运行结果:

values value1 value2

0 apple, orange apple orange

1 banana banana None

2 grape, mango grape mango

3 watermelon watermelon None

在使用正则表达式将列表拆分为列时,我们可以根据具体的需求来自定义正则表达式的模式,以适应不同的数据格式。此外,pandas还提供了许多其他强大的函数和方法,可以帮助我们更加灵活地处理和分析数据。