拆分熊猫列并将最后一个元素添加到新列

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

【讨论】:

以上是关于拆分熊猫列并将最后一个元素添加到新列的主要内容,如果未能解决你的问题,请参考以下文章

拆分所有列表框元素并将它们全部添加到新的字符串数组中

拆分字符串,提取并添加到另一列正则表达式 BIGQUERY

按多列分组并将dict元素的中值作为熊猫中的新列

熊猫:将新列添加到作为索引列副本的数据框

从文件名中提取时间戳并使用 Pig 将其添加到新列(例如日期)中

在将带有空字符串的新列添加到熊猫数据框时替换现有列名