如何基于的过滤行

use*_*121 1 python pandas

我在pandas中有一个数据框,其中一列(即列'b')包含带符号的字符串:

import numpy as np 
import pandas as pd 

df = pd.DataFrame({'a': [51, 2,32,99,81], 'b': ['$3', '$4','$-','$0','$23']})
Run Code Online (Sandbox Code Playgroud)

我想过滤数据帧,这样我只保留列'b'只返回零以外的整数的行,并丢弃$符号.

我想要的输出是:

在此输入图像描述

欢迎任何反馈.

Max*_*axU 6

In [64]: df = pd.DataFrame({'a': [51, 2,32,99,81], 'b': ['$3', '$4','$-','$0','$23']})

In [65]: df['b'] = pd.to_numeric(df['b'].str.replace(r'\D+', ''), errors='coerce')

In [67]: df
Out[67]:
    a     b
0  51   3.0
1   2   4.0
2  32   NaN
3  99   0.0
4  81  23.0

In [68]: df = df[df['b'].notnull() & df['b'].ne(0)]

In [69]: df
Out[69]:
    a     b
0  51   3.0
1   2   4.0
4  81  23.0
Run Code Online (Sandbox Code Playgroud)

或者我们可以这样过滤它:

In [73]: df = df.query("b == b and b != 0")

In [74]: df
Out[74]:
    a     b
0  51   3.0
1   2   4.0
4  81  23.0
Run Code Online (Sandbox Code Playgroud)