Python 如果数据类型在pandas中为int,如何删除行?

Python 如果数据类型在pandas中为int,如何删除行?,python,pandas,dataframe,Python,Pandas,Dataframe,如果数据帧的值的数据类型是int 代码如下:- dfd={'a':1,'b':'a','c':56,'d':'ok'} dataframes=pd.DataFrame(dfd.items()) #if value is integer drop for line in dataframes.index: if(type(dataframes['value'][line])==int): dataframes.drop(dataframes['value'][line

如果数据帧的值的数据类型是
int

代码如下:-

dfd={'a':1,'b':'a','c':56,'d':'ok'}

dataframes=pd.DataFrame(dfd.items())

#if value is integer drop

for line in dataframes.index:
    if(type(dataframes['value'][line])==int):
        dataframes.drop(dataframes['value'][line],inplace=True)
我期待着:-

   key value
   b   d
   a   ok
但是我犯了一个错误

KeyError:“值”


如何实现这一点?

首先必须设置列名称,例如,由DataFrame协构造函数:

dataframes=pd.DataFrame(dfd.items(), columns=['key','value'])

print (dataframes)
  key value
0   a     1
1   b     a
2   c    56
3   d    ok
然后将值转换为数值by和
errors='concurve'
,如果没有返回数值,则按in筛选非数值行:

df = dataframes[pd.to_numeric(dataframes['value'], errors='coerce').isna()]
print (df)
  key value
1   b     a
3   d    ok
    
如果只需要过滤整数,另一个想法是:

df = dataframes[dataframes['value'].apply(lambda x: not isinstance(x, int))]
或:



dtype
应用于列而不是单个行。
df = dataframes[dataframes['value'].apply(type) != int]
print (df)
  key value
1   b     a
3   d    ok