我必须在python中为dataframe中的每一行迭代一些ifelse条件

2024-09-28 05:20:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须为dataframe中的每一行迭代一些if-else条件。在

如果row1满足第一个条件,它将通过为该行再添加一列来回答“yes”或“no”,然后退出。在

但是如果对于row 2,在满足另一个条件的情况下,它不应该覆盖第一行的“yes”或“no”。在

我想保留它,或者我们可以说在第二次迭代中,它应该只检查row2的所有if-else条件,然后row3等等。在

准确地说,只有一行将根据所有条件进行检查,无论哪一个条件满足,它都将通过为该行再添加一列并退出来给出输出。input and output

我不熟悉python,我写的代码不工作。在

我已经写了下面的代码。请帮帮我。在

for index, row in data.iterrows():

if row['Resolution Summary'].str.contains("\\bHardware failure\\b", case = False) :
    df['flag'] = np.where(data['Resolution Summary'].str.contains("\\bHardware failure\\b", case = False), 'yes','')

    elif row['Resolution Summary'].str.contains("\\brouter\\b", case = False):
        df['flag'] = np.where(data['Resolution Summary'].str.contains("\\brouter\\b", case = False), 'yes','')

Tags: no代码falsedataifsummary条件else
1条回答
网友
1楼 · 发布于 2024-09-28 05:20:54

您不应该显式地迭代行。事实上,您不应该多次计算相同的布尔值。在

如果您希望在给定的条件下确定特定任务的优先级,可以显式地这样做。这里有一种使用numpy.where的方法;我们使用~来表示“否定”。在

mask1 = df['Resolution Summary'].str.contains("\\bHardware failure\\b", case = False)
mask2 = df['Resolution Summary'].str.contains("\\brouter\\b", case = False)

df['flag'] = np.where(mask1, 'yes', '')
df['flag'] = np.where(mask2 & ~mask1, 'yes', df['flag'])

当然,在这种非常小的情况下,您只需使用一个条件:

^{pr2}$

相关问题 更多 >

    热门问题