Pandas:如何根据字符串长度过滤行


您可以使用以下方法来过滤 pandas DataFrame 中包含特定长度字符串的行:

方法 1:根据列中的字符串长度过滤行

 #filter rows where col1 has a string length of 5
df. loc [df[' col1 ']. str . len () == 5 ]

方法2:根据多列的字符串长度过滤

 #filter rows where col1 has string length of 5 and col2 has string length of 7
df. loc [(df[' col1 ']. str . len () == 5 ) & (df[' col2 ']. str . len () == 7 )]

以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' conf ': ['East', 'East', 'North', 'West', 'North', 'South'],
                   ' pos ': ['Guard', 'Guard', 'Forward', 'Center', 'Center', 'Forward'],
                   ' points ': [5, 7, 7, 9, 12, 9]})

#view DataFrame
print (df)

    conf pos points
0 East Guard 5
1 East Guard 7
2 North Forward 7
3 West Center 9
4 North Center 12
5 South Forward 9

示例 1:根据列中的字符串长度过滤行

以下代码显示如何从 DataFrame 中过滤conf列中字符串长度为5的行:

 #filter rows where conf has a string length of 5
df. loc [df[' conf ']. str . len () == 5 ]

	conf pos points
2 North Forward 7
4 North Center 12
5 South Forward 9

仅返回conf列的字符串长度为5的行。

我们可以在conf列中看到两个不同的字符串满足这个标准:

  • “北”
  • “南”

两个字符串的长度均为5

示例 2:根据多列的字符串长度过滤行

以下代码显示如何从 DataFrame 中过滤conf列中字符串长度为5pos列中字符串长度为7的行:

 #filter rows where conf has string length of 5 and pos has string length of 7
df. loc [(df[' conf ']. str . len () == 5 ) & (df[' pos ']. str . len () == 7 )]

        conf pos points
2 North Forward 7
5 South Forward 9

仅返回conf列的字符串长度为5pos列的强制长度为7的行。

注意:您可以在此处找到 pandas 中str.len()函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何根据条件删除 Pandas DataFrame 中的行
如何根据多个条件过滤 Pandas DataFrame
如何在 Pandas DataFrame 中使用“NOT IN”过滤器

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注