pandas如何查找列数相等的行数

时间:2018-03-26 16:24:40

标签: python regex pandas dataframe

我想知道当列的值等于一个或多个空格或制表符或换行符时,如何找到df中的行数,

df['currency'].str.findall(r'[^\s|\n|\t]+')

但上面的代码只给了我currency列上值的行索引。

3 个答案:

答案 0 :(得分:2)

您可能正在寻找

df['currency'].str.contains(r'\s+').sum()

您当前的方法会查找包含空格的行 此外,\s已包含\n\t,因此此处不需要字符类。 +运算符匹配一次或多次

<小时/> 对于记录,\s相当于

[ \t\n\r\f\v]

有关详细信息,请参阅Python documentation

答案 1 :(得分:1)

尝试使用.str.contains,它将为每一行返回一个布尔值,然后对结果求和:

df['currency'].str.contains(r'\S+').sum()

根据来自@Jan和@ctwheels的提示更新了正则表达式 - \s+将匹配一个或多个空格字符(\S将匹配一个或多个非空白字符,如果这样做的话你需要的是什么。)

答案 2 :(得分:1)

你不需要正则表达式。一种方法是应用pd.Series.strip并测试您的结果是否为空字符串。

import pandas as pd

s = pd.Series(['  ', '\t', ' ', 'string', '--'])

res = s.str.strip().values == ''

# array([ True,  True,  True, False, False], dtype=bool)

计算行数:

res = (s.str.strip().values == '').sum()