如果dtype是int in pandas,如何删除行?

时间:2020-08-10 11:45:35

标签: 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],inplace=True)

我期望:-

   key value
   b   d
   a   ok

但是出现错误

KeyError:'值'

我该如何实现?

1 个答案:

答案 0 :(得分:2)

首先需要设置列名称,例如通过DataFrame cosntructor:

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

print (dataframes)
  key value
0   a     1
1   b     a
2   c    56
3   d    ok

然后通过to_numericerrors='coerce'将值转换为数字,如果没有返回缺失值,则在Series.isna中用boolean indexing过滤非数字行:< / p>

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))]

或者:

df = dataframes[dataframes['value'].apply(type) != int]

print (df)
  key value
1   b     a
3   d    ok