Pandas 按分隔符拆分pandas数据帧列
在本文中,我们将介绍如何使用Python Pandas库将pandas数据帧(column)按照指定的分隔符(delimiter)进行拆分。
阅读更多:Pandas 教程
背景
在数据分析中,我们经常需要对数据进行拆分。例如,在处理电子邮件数据时,我们需要将每个收件人拆分成单独的列以进行分析。此外,在处理合并的数据时,我们有时需要将单个列拆分为多个列,以将数据重新组合为我们需要的格式。
方法
在Pandas中,我们可以使用str.split()函数来按照分隔符将列拆分为多个列。下面是一个示例,演示如何将名字以空格为分隔符拆分为名和姓两个列。
import pandas as pd
# 定义一个包含名字和姓的列的数据帧
df = pd.DataFrame({'Name': ['John Smith', 'Jane Doe', 'Bob Johnson']})
# 通过空格分隔名字列
df[['First Name', 'Last Name']] = df['Name'].str.split(' ', 1, expand=True)
# 打印结果
print(df[['First Name', 'Last Name']])
输出结果如下:
First Name Last Name
0 John Smith
1 Jane Doe
2 Bob Johnson
在上面的示例中,我们使用str.split()函数将’Name’列按照空格进行拆分。’expand’参数设置为True以将拆分结果放入新的DataFrame列中。我们将新的列命名为’First Name’和’Last Name’。
将字符串拆分为多个列
如果我们的列中含有多个分隔符,我们可以使用正则表达式来指定分隔符的模式来拆分列。例如,如果我们有一个列包含用逗号分隔的城市和国家,我们可以使用以下代码将该列拆分为两个列:
# 定义一个城市和国家的列的数据帧
df = pd.DataFrame({'City/Country': ['New York, USA', 'Paris, France', 'London, UK']})
# 通过逗号分隔城市/国家列
df[['City', 'Country']] = df['City/Country'].str.split(r',\s*(?=[^,]+$)', expand=True)
# 打印结果
print(df[['City', 'Country']])
输出结果如下:
City Country
0 New York USA
1 Paris France
2 London UK
在上面的示例中,我们使用正则表达式将逗号和其后的空格作为分隔符。’?=…’语法表示正则表达式应该在括号中的表达式后面匹配,但是它不应该包括在结果中。
拆分并向下转移拆分后的列
如果拆分后的列已经存在于数据帧中,则我们可以使用assign()函数将拆分结果向下移动到新的行。
import pandas as pd
# 定义一个名字,包含名字和中间名的列的数据框
df = pd.DataFrame({'Name': ['John William Smith', 'Jane Elizabeth Doe', 'Bob John Johnson']})
# 拆分名字和中间名列
df[['First Name', 'Middle Name']] = df['Name'].str.split(' ', 1, expand=True)
# 下移拆分结果
df = df.assign(Last_Name=df['Middle Name'], Middle_Name='')
# 打印结果
print(df[['First Name', 'Middle Name', 'Last_Name']])
输出结果如下:
First Name Middle Name Last_Name
0 John William Smith
1 Jane Elizabeth Doe
2 Bob John Johnson
在上面的示例中,我们首先按空格拆分“名字”列,然后使用df.assign()函数将“中间名”列移动到新的“Last_Name”列中,同时将“中间名”列清空。最终的结果是每个人的姓,名和中间名分开为三个不同的列。
总结
在本文中,我们介绍了如何使用Pandas库在数据分析中进行按分隔符拆分pandas数据帧列。我们通过示例演示了如何将单个列拆分为多个列,如何使用正则表达式来分隔具有多个分隔符的列,并展示了如何拆分列并将结果向下转移。这些技巧可以帮助我们更有效地处理数据,使我们能够快速地对数据进行分析和可视化。