从pandas datafram中删除字符串中包含数值的行

2024-10-06 02:33:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框,有两列,类型和文本 文本列包含字符串值。 如何删除文本列中包含一些数值的行。 e、 g组:

`ABC 1.3.2`, `ABC12`, `2.2.3`, `ABC 12 1`

我试过下面的,但有一个错误。你知道为什么会出错吗?在

^{pr2}$

Tags: 数据字符串文本类型错误数值abcpr2
3条回答

来自jpp的数据

s[s.str.isalpha()]
Out[261]: 
0    ABC
2    DEF
6    GHI
dtype: object

假设您将numeric定义为x.isdigit()求值为True,则可以将any与生成器表达式一起使用,并通过pd.Series.apply创建布尔掩码:

s = pd.Series(['ABC', 'ABC 1.3.2', 'DEF', 'ABC12', '2.2.3', 'ABC 12 1', 'GHI'])

mask = s.apply(lambda x: not any(i.isdigit() for i in x))

print(s[mask])

0    ABC
2    DEF
6    GHI
dtype: object

在您的例子中,我认为使用简单索引比使用drop更好。例如:

>>> df
       text type
0       abc    b
1    abc123    a
2       cde    a
3  abc1.2.3    b
4     1.2.3    a
5       xyz    a
6    abc123    a
7      9999    a
8     5text    a
9      text    a


>>> df[~df.text.str.contains(r'[0-9]')]
   text type
0   abc    b
2   cde    a
5   xyz    a
9  text    a

它定位没有数字文本的任何行

解释:

^{pr2}$

返回有任何数字的布尔序列:

0    False
1     True
2    False
3     True
4     True
5    False
6     True
7     True
8     True
9    False

您可以将它与~一起使用,以索引返回false的数据帧

相关问题 更多 >