导入了数据帧的数据。但是,导入的数据可能不正确,因此我正在尝试删除它。示例数据帧:
user test1 test2 other
0 foo 1 7 bar
1 foo 2 9 bar
2 foo 3;as 5 bar
3 foo 3 5 bar
我想要清理列test1
和test2
。我想删除不在指定范围内的值以及那些包含字符串的值(如上面的条目3;as
)所示。我通过定义一个可接受的值来做到这一点:
我想清理一下名单:
headers = ['test1', 'test2']
我现在的代码是:
# Remove string entries
for i in headers:
df[i] = pd.to_numeric(df[i], errors='coerce')
df[i] = df[i].fillna(0).astype(int)
# Remove unwanted values
for i in values_dict:
df[i] = df[df[i].isin(values_dict[i])]
但是,错误的值似乎没有被删除,以形成所需的数据帧:
user test1 test2 other
0 foo 1 7 bar
1 foo 3 5 bar
谢谢你的帮助!在
您可以这样做;使用
np.logical_and
从多个列构造and
条件,并使用它对数据帧进行子集:分解:
^{pr2}$首先将感兴趣的列转换为数字类型,然后检查该列是否在特定范围内;这将为每个列生成一个布尔序列:
为了同时满足来自所有列的条件,我们需要一个
and
操作,可以使用numpy.logical_and
进一步构造该操作;在这里使用*
将所有列条件作为参数解压。在相关问题 更多 >
编程相关推荐