如果列的值以pandas为单位,如何将函数应用于行

时间:2018-09-25 03:25:55

标签: pandas conditional

仅当col1包含值'12'时,我才希望对每行应用一个函数。对于没有12的行,在col3上返回0

我只想将以下内容应用于col1 = 12的行。

df ['col3'] = df ['col2']。str.lower()。str.contains('apple',na = 0)

d1
col1    col2
12      apple
13      apple
12      grape

预期结果。

df1
col1    col2    col3
12      apple   True
13      apple   False
12      grape   False

谢谢

2 个答案:

答案 0 :(得分:2)

您可以尝试:

df['col3'] = (df['col1'] == 12) & (df['col2'].str.contains('apple'))

输出:

  col1   col2   col3
0   12  apple   True
1   13  apple  False
2   12  grape  False

答案 1 :(得分:2)

可以简单地做

df['col3'] = df['col1'].eq(12) & df['col2'].str.contains('apple')

或分别分两个步骤

s = df.loc[df.col1.eq(12), 'col2'].str.lower().str.contains('apple',na=0)
df.loc[:, 'col32'] = s
df = df.fillna(False)