-2

在此处输入图像描述

所以如果 col2 = a 或 b col3 被分配“是”,否则如果 col 2 是 c col3 被分配“否”

有以下输出:

在此处输入图像描述

我试过使用 lambda 但它只适用于第一个条件

4

2 回答 2

3

尝试使用pd.Series.map

df['Col3'] = df['Col2'].map({'a': 'yes', 'b': 'yes', 'c': 'no'})
print(df)

输出:

   Col1 Col2 Col3
0     1    a  yes
1     2    b  yes
2     3    c   no
于 2020-12-28T04:07:17.660 回答
1

使用,isin然后map

l = ['a','b']
df['Col3'] = df['Col2'].isin(l).map({True:'yes', False:'no'})
print(df)

输出:

   Col1 Col2 Col3
0     1    a  yes
1     2    b  yes
2     3    c   no

不建议对此问题进行更新,但这是我认为您正在寻找的语法:

df = pd.DataFrame({'Col1':[1,2,3], 'Col2':[*'abc'], 'Col3':[np.nan]*3})
df['Col3'] = df['Col2'].apply(lambda x: 'yes' if (x == 'a') | (x == 'b') else 'no')
df

输出:

   Col1 Col2 Col3
0     1    a  yes
1     2    b  yes
2     3    c   no
于 2020-12-28T04:11:43.797 回答