计算每行中的字符数,如果所有字符都低于某个数字,则丢弃

问题描述 投票:0回答:1

我有一个包含许多列的数据框,所有列都包含与

NaNs
混合的文本数据。

我想计算每列每行的字符数,然后删除所有列少于 100 个字符的任何行。

我正在考虑为每列创建一个带有

str.len
的新列,然后使用它过滤掉行,但这看起来很麻烦。

示例:

# Filter out rows with less than 5 characters in each row
>>> df
   column_1    column_2    column_3
0   werhio      dsfhjk      dh
1   sgds        fuo         g       ---> filtered
2   wqyuio      dsfjklh     fhkjfj
3   fhi         d           fgho    ---> filtered
4   sadfhkj     sdjfkhs     yyisdk       

>>> df_filtered
   column_1    column_2    column_3
0   werhio      dsfhjk      dh
2   wqyuio      dsfjklh     fhkjfj
4   sadfhkj     sdjfkhs     yyisdk 
python pandas string dataframe
1个回答
0
投票

无需创建新列,只需

apply
到所有列,聚合总数
sum
并创建布尔系列用于布尔索引:

out = df[df.apply(lambda x: x.str.len()).sum(axis=1).ge(10)]

输出:

  column_1 column_2 column_3
0   werhio   dsfhjk       dh
2   wqyuio  dsfjklh   fhkjfj
4  sadfhkj  sdjfkhs   yyisdk
© www.soinside.com 2019 - 2024. All rights reserved.