📌  相关文章
📜  pandas 将列拆分为多列 - Python (1)

📅  最后修改于: 2023-12-03 15:33:24.414000             🧑  作者: Mango

Pandas 将列拆分为多列 - Python

在数据分析和处理中,经常需要将一个列按照一定的规则拆分成多个列,Pandas 的 str.split() 函数可以很方便地实现这个功能。

准备工作

首先,我们需要导入 Pandas 包并读入数据:

import pandas as pd

data = pd.read_csv('<file_path>.csv')
基本用法

str.split() 函数可以将一个列拆分成多个列,并将每个拆分后的值放在一个列表中。例如,在以下数据集中,我们将 Name 列按照空格拆分成姓和名两列:

data[['Last Name', 'First Name']] = data['Name'].str.split(' ', expand=True)

这里 expand=True 表示将每个拆分后的值放到新列中,如果为 False 则会将所有值合并为一个列。

高级用法
拆分多列

如果要将一个列拆分成多个列,并将每个拆分后的值分别放在不同的列中,我们需要在函数中传递拆分后的列名列表。例如,以下数据集中,我们将 Address 列按照逗号和空格拆分成三列:

data[['Street', 'City', 'State']] = data['Address'].str.split(', ', expand=True)
拆分限制

如果要限制拆分后的数量,可以使用 n 参数。例如,在以下数据集中,我们将 Name 按照空格拆分为两列:

data[['First Name', 'Last Name']] = data['Name'].str.split(' ', n=1)
正则表达式拆分

如果需要按照正则表达式进行拆分,可以通过传递正则表达式作为 pat 参数实现。例如,在以下数据集中,我们将 Name 按照第一个字母和空格进行拆分:

data[['First Initial', 'Last Name']] = data['Name'].str.split('(?<=^.).\s', expand=True)

正则表达式 (?<=^.).\s 表示匹配以任何字符开头并且后面跟着一个空格的字符串。(?<=^.) 表示这个字符串前面需要有一个字符,并且不将其包含在匹配结果中。

总结

Pandas 的 str.split() 函数可以很方便地将一个列按照一定的规则拆分成多个列,并将拆分后的值放到新的列中。在进行数据清洗和处理时,这个函数是非常有用的。