2024-04-25 01:08:53 发布
网友
wu=pd.DataFrame({'a':['hhh',2,3,4,5],'b':[1,2,np.nan,np.nan,5]}
我想删除带有“hhh”的行,因为“a”中的所有数据都是数字。 原始数据量很大。非常感谢你。你知道吗
选项1 使用pd.to_numeric转换a
pd.to_numeric
a
df.a = pd.to_numeric(df.a, errors='coerce') df a b 0 NaN 1.0 1 2.0 2.0 2 3.0 NaN 3 4.0 NaN 4 5.0 5.0
非数字列强制为NaN。你可以放下这一排-
NaN
df.dropna(subset=['a']) a b 1 2.0 2.0 2 3.0 NaN 3 4.0 NaN 4 5.0 5.0
选项2 另一种选择是使用str.isdigit-
str.isdigit
df.a.str.isdigit() 0 False 1 NaN 2 NaN 3 NaN 4 NaN Name: a, dtype: object
过滤器本身-
df[df.a.str.isdigit().isnull()] a b 1 2 2.0 2 3 NaN 3 4 NaN 4 5 5.0
注意事项-
如果数字也是字符串,则删除isnull位-
isnull
df[df.a.str.isdigit()]
df = pd.DataFrame({'a':['hhh',2,3,4,5],'b':[1,2,np.nan,np.nan,5]}) df.drop(df[df['a'].apply(type) != int].index, inplace=True)
如果只想查看相应的行:
df.loc[df['a'].apply(type) != int, :]
import pandas as pd import numpy as np wu=pd.DataFrame({'a':['hhh',2,3,4,5],'b':[1,2,np.nan,np.nan,5]}) #wu = wu[wu.a.str.contains('\d+',na=False)] #wu = wu[wu.a.apply(lambda x: x.isnumeric())] wu = wu[wu.a.apply(lambda x: isinstance(x, (int, np.int64)))] print(wu)
请注意,在创建数据帧时,遗漏了右括号。你知道吗
我试了三种方法,但只有第三种有效。如果你觉得合适的话,你可以试试其他的。一定要让我知道它是否适用于更大的数据集。你知道吗
选项1
使用
pd.to_numeric
转换a
非数字列强制为
NaN
。你可以放下这一排-选项2
另一种选择是使用
str.isdigit
-过滤器本身-
注意事项-
如果数字也是字符串,则删除
isnull
位-如果只想查看相应的行:
请注意,在创建数据帧时,遗漏了右括号。你知道吗
我试了三种方法,但只有第三种有效。如果你觉得合适的话,你可以试试其他的。一定要让我知道它是否适用于更大的数据集。你知道吗
相关问题 更多 >
编程相关推荐