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