Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python可以将列截断为特定长度,而不剪切最后一个单词_Python_Pandas_Truncate_Maxlength - Fatal编程技术网

Python可以将列截断为特定长度,而不剪切最后一个单词

Python可以将列截断为特定长度,而不剪切最后一个单词,python,pandas,truncate,maxlength,Python,Pandas,Truncate,Maxlength,我尝试将列的长度减少到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,并使用此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)
请注意,反过来(先切断,然后截断)可能会导致句子末尾出现半个单词

lambda表达式是如何工作的

  • 它被赋予了
    x
    ,一个当前要处理的句子
  • 它检查句子长度是否超过50个字符
    2.1. 如果是,则首先将其截断为50个字符,然后删除最后一个单词
    2.2. 否则,句子少于50个字符,句子保持完整

  • 您希望前50个字符加上最后一个单词,前50个字符加上最后一个单词总共50个字符,还是前50个字符并从中删除最后一个单词?你能澄清一下这一点吗?我希望列中每行最多有50个字符,第一个单词应该保留。我知道有些情况下,如果最后几句话被删除了,我的年龄可能会在50岁以下,但没关系。但是,对于行len已经小于等于50的情况,我不想修改它们,我希望公式只适用于长度>50的行,非常感谢!最后一个问题是,当我已经有50岁以下的len时,我能为这种情况设定一个条件吗?因为它也在删除最后一个单词,我不希望这样,如果len小于50,那么这个[:-1]就不应该应用,任何方法都可以集成到您的解决方案中?@Isa Updated:)非常感谢!我敢再问一次,关于lambda表达式,你知道我如何转换这个:?@Isa在那里回答你:)