如果值的数据类型为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:'值'
我该如何实现?
答案 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_numeric
和errors='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