如何在pandas数据框中的一列中仅过滤字符串值/整数/浮点值,如下所示?
SIC
1 246804
2 135272
3 898.01
4 3453.33
5 shine
6 add
7 522
8 Nan
9 string
10 29.11
11 20
答案 0 :(得分:9)
您可以使用pd.to_numeric
和布尔索引的输出。
要仅使用字符串:
df[pd.to_numeric(df.SIC, errors='coerce').isnull()]
输出:
SIC
5 shine
6 add
8 Nan
9 string
仅使用数字:
df[pd.to_numeric(df.SIC, errors='coerce').notnull()]
输出:
SIC
1 246804
2 135272
3 898.01
4 3453.33
7 522
10 29.11
11 20
答案 1 :(得分:0)
您可以使用apply()
方法和isinstance()
功能。可以用str
,int
等替换float
:
df = pd.DataFrame([1,2,4.5,np.NAN,'asdf',5,'string'],columns=['SIC'])
print(df)
SIC
0 1
1 2
2 4.5
3 NaN
4 asdf
5 5
6 string
print(df[df['SIC'].apply(lambda x: isinstance(x,str))])
SIC
4 asdf
6 string