我想知道当列的值等于一个或多个空格或制表符或换行符时,如何找到df
中的行数,
df['currency'].str.findall(r'[^\s|\n|\t]+')
但上面的代码只给了我currency
列上值的行索引。
答案 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()