在Python Pandas Dataframe中过滤出字符串值

时间:2018-10-15 17:54:20

标签: python string pandas dataframe

我正在使用Python Pandas。

例如,我有一个如下数据框

index, name, acct_no, city
1, alex, 10011, huntington
2, rider, 100AB, charleston
3, daniel, A1009, bonn
4, rice, AAAA1, new york
5, ricardo, 12121, london

从这个数据集中,我只想得到那些 acct_no 列中没有任何字符串的记录。

因此,我想从上述数据集中获得以下结果。在以下结果中, acct_no 列的值中没有字符串。

index, name, acct_no, city
1, alex, 10011, huntington
5, ricardo, 12121, london

哪个代码会给我这样的结果?

2 个答案:

答案 0 :(得分:2)

可以检查str.contains

df1=df[~df.acct_no.str.contains('[a-zA-Z]')]
df1
Out[119]: 
   index      name acct_no         city
0      1      alex   10011   huntington
4      5   ricardo   12121       london

或者使用to_numeric并按notna进行过滤

df[pd.to_numeric(df.acct_no,errors='coerce').notna()]

答案 1 :(得分:0)

另一种解决方案可能是使用pd.to_numeric,它尝试将值转换为数字。当失败时,我们可以让它返回nan(通过指定errors ='coerce'),然后删除所有nan值:

df.acct_no = pd.to_numeric(df.acct_no, errors='coerce')
df.dropna()