pandas 为数值筛选DataFrame

xdnvmnnf  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(151)

假设我的DataFramedf有一个名为col的列,类型为string

df['col'].filter(str.isnumeric)
jogvjijk

jogvjijk1#

你可以这样做:

df.loc[df['col'].str.isnumeric()]
j2datikz

j2datikz2#

第一个问题,你使用的是一个没有括号的 * 内置 * python方法str.isnumeric,因此是TypeError: 'method_descriptor' object is not iterable
第二个问题,假设你已经给str.isnumeric加上了括号,这个函数需要一个参数/字符串来检查给定字符串中的所有字符是否都是数字字符,因此得到了TypeError: unbound method str.isnumeric() needs an argument
第三个问题,假设你已经修复了1)2),因为这个函数返回一个布尔值(True * 或 * False),你不能把它作为panda * 内置 * 方法pandas.Series.filter的第一个参数传递。
根据文档,第一个参数需要类似于列表:
项目:类似列表
保留项中轴标签
在您的示例中,我认为您希望将boolean indexingpandas.DataFrame.loc一起使用:

import pandas as pd

df = pd.DataFrame({'col': ['foo', 'bar 123', '456']})
m = df['col'].str.isnumeric()
out = df.loc[m]

输出量:

print(out)
   col
2  456

相关问题