拆分熊猫列并将最后一个元素添加到新列
Posted
技术标签:
【中文标题】拆分熊猫列并将最后一个元素添加到新列【英文标题】:Split pandas column and add last element to a new column 【发布时间】:2016-11-24 17:17:50 【问题描述】:我有一个包含(除其他列之外)全名的 pandas 数据框:
fullname
martin master
andreas test
我想创建一个新列,它将全名列沿空白区域拆分,并将最后一个元素分配给一个新列。结果应如下所示:
fullname lastname
martin master master
andreas test test
我认为它会像这样工作:
df['lastname'] = df['fullname'].str.split(' ')[-1]
但是,我收到了KeyError: -1
我使用[-1]
,这是拆分组的最后一个元素,以确保我得到真实的姓氏。在某些情况下(例如像 andreas martin master 这样的名字),这有助于获取姓氏,即 master。
那么我该怎么做呢?
【问题讨论】:
一键搞定:df[['first_name','last_name']] = df['fullname'].str.split(' ', expand=True)
或者更好df[['first_name','last_name']] = df['fullname'].str.split(expand=True)
【参考方案1】:
您需要另一个 str
来访问每一行的最后一个拆分,您所做的实际上是尝试使用不存在的标签对系列进行索引:
In [31]:
df['lastname'] = df['fullname'].str.split().str[-1]
df
Out[31]:
fullname lastname
0 martin master master
1 andreas test test
【讨论】:
类似线程***.com/questions/12504976/…【参考方案2】:如果需要创建 2 个新列,请使用 str.rsplit
和参数 n=1
。如果只需要最后一列,EdChum
解决方案更好:
print (df)
fullname
0 martin master
1 andreas test
2 andreas martin master
df[['first_name','last_name']] = df['fullname'].str.rsplit(expand=True, n=1)
print (df)
fullname first_name last_name
0 martin master martin master
1 andreas test andreas test
2 andreas martin master andreas martin master
【讨论】:
以上是关于拆分熊猫列并将最后一个元素添加到新列的主要内容,如果未能解决你的问题,请参考以下文章