有没有比这更好的方法来过滤熊猫系列中的字符串了?
这是我想出的:
df = pd.DataFrame({'a': [1,2,3,4,'cat','hat','mat'], 'b': [1,2,3,4,5,6,7] })
原文:
a b
0 1 1
1 2 2
2 3 3
3 4 4
4 cat 5
5 hat 6
6 mat 7
df = df[df['a'].apply(lambda x: isinstance(x, str))]
结果:
a b
4 cat 5
5 hat 6
6 mat 7
但是,此语法似乎很冗长。有形式吗? :
df[df['a'].is_type(str)]
编辑:我对检查类型而不是内容感兴趣。因此,例如,我想包含'12345'
而排除12345
。
答案 0 :(得分:4)
我会推荐to_numeric
df[pd.to_numeric(df.a,errors='coerce').isna()]
Out[246]:
a b
4 cat 5
5 hat 6
6 mat 7
如果您认为评论中提到的情况为零
df[df.a.map(lambda x : type(x).__name__)=='str']
Out[257]:
a b
4 cat 5
5 hat 6
6 mat 7
答案 1 :(得分:1)
您也可以尝试:
df[df.a.str.isalpha() == True]
出局:
a b
4 cat 5
5 hat 6
6 mat 7