将to_numeric 与errors='coerce' 一起使用,测试未缺失值与测试未缺失值链接:
df1 = df[pd.to_numeric(df["col1"], errors='coerce').isna() & df["col1"].notna()]
如果需要区分数字和数值的字符串表示,也可以通过isinstance 进行测试:
df1 = df[~df['col1'].apply(lambda x: isinstance(x, (float, int)))]
print (df1)
col1
0 Hello
1 World
2 abcd
5 qwerty123
检查解决方案的差异 - 10 是数字的字符串代表:
make_df = ["Hello", "World", "abcd", 12.4, np.nan, "qwerty123", "10"]
df = pd.DataFrame(make_df, columns = ["col1"])
print (df)
col1
0 Hello
1 World
2 abcd
3 12.4
4 NaN
5 qwerty123
6 10
df1 = df[pd.to_numeric(df["col1"], errors='coerce').isna() & df["col1"].notna()]
print (df1)
col1
0 Hello
1 World
2 abcd
5 qwerty123
df2 = df[~df['col1'].apply(lambda x: isinstance(x, (float, int)))]
print (df2)
col1
0 Hello
1 World
2 abcd
5 qwerty123
6 10