Python Pandas 将列截断到特定长度而不截断最后一个字

Python Pandas Truncate a column to a specific length without cutting the last word

我尝试将列的长度减少到 50,并使用此 lambda fct:

df['col_1'] = df['col_1'].apply(lambda x: x[:50])

它工作得很好,除了它会删除最后一个词,我需要一个解决方案来删除最后一个词,即使长度会减少几个字符。

感谢您对此的任何建议

最多截断 50 个字符并截断最后一个字:

df['col_1'] = df['col_1'].apply(lambda x: ' '.join(x[:50].split(' ')[:-1]) if len(x) > 50 else x)

请注意,反过来(先切断,然后才截断)可能并且将会导致句子末尾的 half-words。

lambda 表达式是如何工作的?

  1. 给定x,当前句子
  2. 它检查句子长度是否超过 50 个字符
    2.1.如果是,它首先截断为 50 个字符,然后删除最后一个单词
    2.2.否则,句子少于 50 个字符,句子保持原样