我有这样一个数据框:
dx1 dx2 dx3 dx4 dxpoa1 dxpoa2 dxpoa3 dxpoa4
25041 40391 Y E
25041 40391 25081 N W U
25041 40391 42822 99681 1 N Y Y
有两组列:dx和dxpoa。根据dxpoa中的某些值,我必须保留dx中的值或放弃它。对于dx中的每个值,该行中相应的dxpoa中都有一个值。例如:如果dxpoa=['Y'或'W'或'1'或'E'],则将dx值保留在相应行中,否则将其丢弃或用0填充。像第一行中的dxpoa1一样,是“Y”,因此dx1将保持原样。但第二行的dxpoa1是“N”,因此第二行的dx1的对应值将变为0。你知道吗
这里有一个矢量化的方法来看待它(使用@vmg的方便的起始帧):
它的作用是为最后的N//2列生成一个True和False的数组,如果值在列表中,则为True;如果值不在列表中,则为False(请注意,我假设1是字符串
"1"
,而不是整数1
):然后我们可以使用
where
来设置前N//2列的值,将值保留在keep
为真的位置,否则将其替换为0。你知道吗给定这样构建的数据帧:
它给出:
定义一个实现替换规则的函数。当引用列中的值不是“Y”、“W”、“1”或“E”时,这将用零替换目标列,正如我从您的描述中了解到的:
然后对每行应用subfunc来迭代列名:
数据帧中的结果
相关问题 更多 >
编程相关推荐