我有一个包含许多列的数据框,所有列都包含与
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
无需创建新列,只需
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