如果在DF

时间:2016-11-22 16:25:11

标签: python python-3.x pandas

我试图根据另一个列值在我的数据帧(DF)中添加一列,以及该值是否在我的DF中。

示例:

>>> d = { 'one' : pd.Series(['aa', 'bb', 'cc', 'aa-01', 'bb-02', 'dd']) }
>>> df = pd.DataFrame(d)
>>> df
     one
0     aa
1     bb
2     cc
3  aa-01
4  bb-02
5     dd

如果我能找到另一个元素,当前元素附加-01或-02,我想添加以下列。
示例:在此数据框中只有元素' aa'和' bb'具有附加值的元素,它们是' aa-01'和' bb-02'因此只有' aa'和' bb'将在新列中显示值True

预期结果:

>>> expected_df
     one  two
0     aa  True
1     bb  True
2     cc  False
3  aa-01  False
4  bb-02  False
5     dd  False

我相信我必须将isin()apply()一起使用,但我无法找到修改行的方法并在函数内同时使用isin作为参数传递给apply

1 个答案:

答案 0 :(得分:1)

使用str.endswith检查以给定字符结尾的字符串并创建一个布尔掩码。然后在将掩码生成馈送到isin方法之后删除最后三个字符。

mask = df['one'].str.endswith(('-01','-02'))
df['two'] = df['one'].isin(df[mask].squeeze().str[:-3])
df

enter image description here