【问题标题】:Remove the 'S' from the end of words in a list (Python, Pandas)从列表中的单词末尾删除“S”(Python、Pandas)
【发布时间】:2014-10-15 05:45:45
【问题描述】:

假设我有一个这样的列表:

Words
One
Twos
Threes
Four
Fives
...
Thousand

有没有一种相对简单的方法可以去掉词尾的“S”?所以它会变成:

Words
One
Two
Three
Four
Five
...
Thousand

【问题讨论】:

  • 向我们展示你到目前为止所做的事情。
  • 抱歉这个懒惰的问题!不幸的是,我现在在家,所以明天我会在电脑前发布我尝试过的内容
  • 看到这个:stackoverflow.com/questions/3939361/…,你可以使用 string[-1:] 来获取最后一个字符。做一些魔术并整理最后带有“s”的行

标签: python-3.x pandas


【解决方案1】:

您可以使用np.where 来测试最后一个字符是否为“s”,如果是,则将其删除,否则使用现有值,这将被向量化并且比列表理解要快得多:

In [14]:

df['Words'] = np.where(df['Words'].str[-1] == 's', df['Words'].str[:-1], df['Words'])
df
Out[14]:
      Words
0       One
1       Two
2     Three
3      Four
4      Five
5  Thousand

另一种可能更快的方法是使用 loc 并且您的条件是仅去除包含尾随 s 的最后一个字符,所有其他行都保持不变:

In [18]:

df.loc[df['Words'].str[-1] == 's','Words'] = df['Words'].str[:-1]
df
Out[18]:
      Words
0       One
1       Two
2     Three
3      Four
4      Five
5  Thousand

【讨论】:

  • 快速跟进——如果我正在处理一个多字词串,即:“Twos and Threes”,这种方法是否仍然有效
  • 不,您必须应用正则表达式或 lambda 来测试该字符的每个单词并将其剥离
  • 啊,我很害怕——好吧,我看看我能做什么!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
相关资源
最近更新 更多