首页 >后端开发 >Python教程 >如何将 Pandas DataFrame 字符串列拆分为两列?

如何将 Pandas DataFrame 字符串列拆分为两列?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-24 04:41:18525浏览

How to Split a Pandas DataFrame String Column into Two Columns?

如何将数据框字符串列拆分为两列?

在处理表格数据时,通常需要操作要提取的数据具体信息。一个常见的任务是将一列字符串值拆分为多列,每列包含原始字符串的一部分。

问题和要求

假设我们有一个 DataFrame名为 df 的一列称为 row,其中包含以下格式的字符串值:

          row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL

我们的目标是拆分将 row 列分成两个新列:fips 和 row,其中 fips 包含每个字符串的前五个字符,row 包含其余字符。

使用 str.split() 的解决方案

分割行列的一种方法是使用 str.split() 方法。该方法采用正则表达式作为参数,并根据正则表达式指定的模式分割字符串。在我们的例子中,我们可以使用以下正则表达式:

r'(\d{5}) +'

此正则表达式将匹配由五个数字组成的序列,后跟一个或多个空格。然后,我们可以使用 str.split() 方法使用此正则表达式拆分行列,并将结果列表分配给 fips 和行列,如下所示:

import pandas as pd

# Split the 'row' column into 'fips' and 'row' columns
df[['fips', 'row']] = df['row'].str.split(r'(\d{5}) +', n=1, expand=True)

expand=True 参数为用于指定 str.split() 方法应返回具有多列的 DataFrame,而不是一系列

结果

执行上述代码后,我们的 DataFrame df 将如下所示:

         fips       row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL

使用的替代解决方案str.extract()

另一种分割行列的方法是使用 str.extract() 方法。此方法采用正则表达式作为参数,并返回一个包含正则表达式匹配项的 DataFrame。在我们的例子中,我们可以使用以下正则表达式:

r'(\d{5}) +\D+'

此正则表达式将匹配由五个数字组成的序列,后跟一个或多个非数字。然后,我们可以使用 str.extract() 方法提取此正则表达式的匹配项,并将生成的 DataFrame 分配给 fips 和 row 列,如下所示:

import pandas as pd

# Split the 'row' column into 'fips' and 'row' columns
df[['fips', 'row']] = df['row'].str.extract(r'(\d{5}) +\D+')

Result

执行上面的代码后,我们的DataFrame df将如下所示:

         fips       row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL

两者上述解决方案将达到所需的结果,将行列拆分为 fips 和行列。 str.split() 解决方案更加灵活,可以用于基于任何正则表达式来拆分列,而 str.extract() 解决方案更简单,更容易理解。

以上是如何将 Pandas DataFrame 字符串列拆分为两列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn