python - Pandas DF : Create New Col by removing last word from of existing column

标签 python pandas string list

这应该很容易,但我很难过。 我有一个 df,其中包含一列 PLACENAMES。其中一些有多个单词名称:

Able County
Baker County
Charlie County
St. Louis County

我想要做的就是在我的 df 中创建一个新列,其中只有名称,没有“county”一词:

Able
Baker
Charlie
St. Louis

我尝试过多种方法:

1. places['name_split'] = places['PLACENAME'].str.split()
2. places['name_split'] = places['PLACENAME'].str.split()[:-1]

3. places['name_split'] = places['PLACENAME'].str.rsplit(' ',1)[0]
4. places = places.assign(name_split = lambda x: ' '.join(x['PLACENAME].str.split()[:-1]))
  1. Works - 将名称拆分为列表['St.','Louis','County']
  2. 列表拼接被忽略,导致生成相同的列表 ['St.','Louis','County'] 而不是 ['St.','Louis']
  3. 引发 ValueError:值的长度 (2) 与索引的长度 (41414) 不匹配
  4. 引发类型错误:序列项 0:预期的 str 实例,找到列表

我还定义了一个函数并使用 .assign() 调用它:

def processField(namelist):
  words = namelist[:-1]
  name = ' '.join(words)
  return name

places = places.assign(name_split = lambda x: processField(x['PLACENAME]))

这也会引发类型错误:序列项 0:预期的 str 实例,找到列表

这似乎是一个非常简单的目标,我可能想得太多了,但我只是被难住了。关于我应该做什么的建议将不胜感激。

最佳答案

申请Series.str.rpartition功能:

places['name_split'] = places['PLACENAME'].str.rpartition()[0]

关于python - Pandas DF : Create New Col by removing last word from of existing column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75439661/

相关文章:

ruby - 使用 Ruby 查找给定编码字符串的组合

python - Python2.7中的StringIO和io.StringIO有什么区别?

Python、 flask 、SQLAlchemy : cannot import from models

python - Django Rest Framework 拒绝接受多部分表单数据

python - 如何从同一个flask-restplus资源类获取和发布端点?

python - 在 Pandas/Pyspark 中比较 2 个数据帧、分配标签并拆分行

java - 如何使用 JAVA 将 XML 字符串添加到现有 XML 文件中?

python - 提交后如何仅清除表单中的特定字段?

python-3.x - 如何计算pandas列中非空元素的数量?

python - 需要 py-upset 帮助吗?