你靠近,只需要使用apply
返回布爾面膜,然後用boolean indexing
什麼回報所有string
價值觀(所以刪除所有未string
就像數字):
df[df['_text'].apply(lambda t: isinstance(t, basestring))]
或者:
df[df['_text'].apply(type) == basestring]
樣品:
df= pd.DataFrame({'_text':[1,4,'ss','']})
print (df)
_text
0 1
1 4
2 ss
3
print (df['_text'].apply(lambda t: isinstance(t, basestring)))
0 False
1 False
2 True
3 True
Name: _text, dtype: bool
#for python 3 it return str, for python 2 basestring
print (df['_text'].apply(type))
0 <class 'int'>
1 <class 'int'>
2 <class 'str'>
3 <class 'str'>
Name: _text, dtype: object
df1 = df[df['_text'].apply(lambda t: isinstance(t, basestring))]
print (df1)
_text
2 ss
3
df1 = df[df['_text'].apply(type) == basestring]
print (df1)
_text
2 ss
3
難道不會給我一個樂趣在'_text'列中,而不是刪除行,如果它不是字符串? – bclayman
@bclayman是的......它被稱爲布爾索引。 –
Hmm so'df ['_ text'] = df ['_ text']。apply(lambda t:t if isinstance(t,basestring)else'')'將我的條目轉換爲'''380',但是執行'df [df ['_ text']。apply(lambda t:isinstance(t,basestring))]'似乎沒有刪除任何行:( – bclayman