如何统计Pandas DataFrame单元格中的非空行数
解决方法
要统计text列每个单元格内的非空行数(排除仅为换行或空白的行),我们可以通过自定义函数结合pandas的apply方法实现,步骤如下:
1. 定义统计非空行数的函数
这个函数会将字符串按换行符分割,然后过滤掉那些去除首尾空白后为空的行,最后统计剩余行的数量:
def count_non_empty_lines(text_str): # 按换行符分割字符串为行列表 lines = text_str.split('\n') # 统计strip后不为空的行的数量 return sum(1 for line in lines if line.strip())
2. 应用函数到DataFrame列
使用apply方法将上述函数作用于text列,生成新的total_lines列:
import pandas as pd MyDict = {'text' : ['\nbla bla text \n\n bla bla another text \n # bla text \n\n\n bla bla another text', '\nbla bla bla text2 \n\n\ bla bla bla another text it is \n\n # bla bla bla text \n bla bla it is another text']} df = pd.DataFrame(MyDict) # 添加统计列 df['total_lines'] = df['text'].apply(count_non_empty_lines) # 查看结果 print(df)
结果验证
运行上述代码后,你会得到符合需求的DataFrame:
text total_lines 0 \nbla bla text \n\n bla bla another text \n # bla text \n\n\n ... 4 1 \nbla bla bla text2 \n\n\ bla bla bla another text it is \n\n ... 4
原理说明:line.strip()会去除每行的首尾空白(包括换行符、空格、制表符等),如果处理后为空字符串,说明这行是仅含空白的无效行,我们直接排除;剩余的就是有效非空行,统计它们的数量即可。
内容的提问来源于stack exchange,提问作者amitkumarpandey
相关产品推荐
相关产品推荐

