我正在根据其他列是否包含某些字符串值来创建新的布尔列。在
这就是我试过的
def function(data):
data["col1"] = 0
data["col2"] = 0
data["col3"] = 0
for i in range(0,len(data)):
if ("cond1" in data.loc[i,"old_col1"].lower()) or ("cond2" in data.loc[i,"old_col1"].lower()):
data.loc[i,"col1"] = 1
elif ("cond3 " in data.loc[i,"old_col1"].lower()) or ("cond4 " in data.loc[i,"old_col2"].lower()):
data.loc[i,"col2"] = 1
elif ("cond5 " in in data.loc[i,"old_col1"].lower()) or ("cond6 " in data.loc[i,"old_col3"].lower()):
data.loc[i, "col3"] = 1
function(data)
但它不能很好地扩展到更大的数据集。在
有没有更好的方法来实现Boolean列col1-3,它的执行速度更快?在
这可以简化为
或者
^{pr2}$简单结构包含在所有数据上
我做了一个示例数据帧,因为你没有提供
您可以使用apply获取一个函数来处理整个数据帧
^{pr2}$合并回
这意味着您可以用布尔列生成一个新的数据帧,如果需要,可以将其连接到原始数据帧中
多重条件
当然,您可以在
str.contains
中生成更复杂的正则表达式,例如独立条件
我注意到每个专栏都有不同的条件,这也可以用这种方法来实现,但它有点复杂,尽管仍然很快。在
首先,我们创建所有实际匹配字符串的数据帧
生产
你应该这样做:
相关问题 更多 >
编程相关推荐