如何将DataFrame拆分为FirstName列和LastName列

2024-09-28 22:20:35 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在python3.6中筛选了一个包含pandas的数据集。我使用的是Spyder IDE,excel工作表包含以下列:

[basic info][1]

这是在读取excel(xls)文件。真正有问题的列是“客户名称”列。为此,我想将Customer Name列拆分为两个单独的列:Firstname和LastName。但是,当我尝试以下操作时:

^{pr2}$

我认为这是一个错误:

KeyError: "['Claire' 'Claire' 'Darrin' ..., 'Dave' 'Dave' 'Chris'] not in index"

但是,当我这样做时:

snames = df[df["Customer Name"].apply(lambda x: x.startswith("S"))]

它返回所有以S开头的客户名称

我尝试过用下划线替换所有空格,但仍然出现相同的错误。我还浏览了excel中的数据,似乎没有遗漏任何空格,也没有注意到。在

所以我想知道,如何将这两个列分开?我不太担心连字符,或其他奇怪的事情(但是如果你愿意,你可以免费提供帮助)。在

如有任何提示或建议,我们将不胜感激!在


Tags: 数据name名称pandasdf客户basic错误
2条回答

我想如果总是一个名字,总是一个姓氏,我想需要^{}和assign to new columns:

df[["FirstName", "LastName"]] = df["Customer Name"].str.split(expand=True)

更一般的解决方案是分配给新的DataFrame,如果多个witespace得到3个或更多的列,那么问题是区分哪两个名称是第一个还是哪个2个是最后一个:

^{pr2}$

应为错误,因为:

df["Customer Name"].apply(lambda x: x.split(" ")[0])

返回FirstName而不是boolean,因此不能按^{}进行筛选。在

你可以试试这个:

df['FirstName'] = df['Customer Name'].str.split().str[0]

相关问题 更多 >