我在'k'列中有一个混合了字符串和float / int值的数据框:
>>> df
a b k
0 1 a q
1 2 b 1
2 3 c e
3 4 d r
当我这样做以从所有列中删除所有空格时:
df.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
它将整数1转换为NaN:
a b k
0 1 a q
1 2 b NaN
2 3 c e
3 4 d r
我该如何克服?
答案 0 :(得分:1)
您可以使用mask
和to_numeric
,这会将所有非数字值都屏蔽为NaN
df=df.mask(df.apply(pd.to_numeric,errors = 'coerce').isnull(),df.astype(str).apply(lambda x : x.str.strip()))
df
Out[572]:
a b k
0 1 a q
1 2 b 1
2 3 c e
3 4 d r