2024-03-29 10:12:09 发布
网友
我想检查数据帧中的每一列是否只包含数字。我怎么能找到它。
假设您有一个名为df的数据帧,如果您这样做了:
df
df.select_dtypes(include=["float", 'int'])
这将返回所有数值列,您可以检查它是否与原始的df相同。
否则,还可以使用exclude参数:
exclude
df.select_dtypes(exclude=["float", 'int'])
并检查这是否给了您一个空的数据帧。
您可以使用to_numeric和强制错误检查:
to_numeric
pd.to_numeric(df['column'], errors='coerce').notnull().all()
对于所有列,您可以遍历列或只使用apply
apply
df.apply(lambda s: pd.to_numeric(s, errors='coerce').notnull().all())
例如
df = pd.DataFrame({'col' : [1,2, 10, np.nan, 'a'], 'col2': ['a', 10, 30, 40 ,50], 'col3': [1,2,3,4,5.0]})
输出
col False col2 False col3 True dtype: bool
可以使用isnumeric()绘制真/假比较
isnumeric()
>>> df A B 0 1 1 1 NaN 6 2 NaN NaN 3 2 2 4 NaN NaN 5 4 4 6 some some 7 value other
>>> df.A.str.isnumeric() 0 True 1 NaN 2 NaN 3 True 4 NaN 5 True 6 False 7 False Name: A, dtype: object # df.B.str.isnumeric()
使用apply()方法,在需要角对角比较的情况下,该方法看起来更健壮:
apply()
具有两个不同列的数据帧,一个列具有混合类型,另一个列具有仅用于测试的数字:
>>> df A B 0 1 1 1 NaN 6 2 NaN 33 3 2 2 4 NaN 22 5 4 4 6 some 66 7 value 11
结果:
>>> df.apply(lambda x: x.str.isnumeric()) A B 0 True True 1 NaN True 2 NaN True 3 True True 4 NaN True 5 True True 6 False True 7 False True
假设您有一个名为
df
的数据帧,如果您这样做了:这将返回所有数值列,您可以检查它是否与原始的
df
相同。否则,还可以使用
exclude
参数:并检查这是否给了您一个空的数据帧。
您可以使用
to_numeric
和强制错误检查:对于所有列,您可以遍历列或只使用
apply
例如
输出
可以使用
isnumeric()
绘制真/假比较示例:
结果:
使用
apply()
方法,在需要角对角比较的情况下,该方法看起来更健壮:具有两个不同列的数据帧,一个列具有混合类型,另一个列具有仅用于测试的数字:
结果:
相关问题 更多 >
编程相关推荐