这应该很容易,但我很难过。
我有一个 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]))
- Works - 将名称拆分为列表
['St.','Louis','County']
- 列表拼接被忽略,导致生成相同的列表
['St.','Louis','County']
而不是['St.','Louis']
- 引发 ValueError:
值的长度 (2) 与索引的长度 (41414) 不匹配
- 引发类型错误:
序列项 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 实例,找到列表
这似乎是一个非常简单的目标,我可能想得太多了,但我只是被难住了。关于我应该做什么的建议将不胜感激。
最佳答案
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/