我试图根据另一个列值在我的数据帧(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
。
答案 0 :(得分:1)
使用str.endswith
检查以给定字符结尾的字符串并创建一个布尔掩码。然后在将掩码生成馈送到isin
方法之后删除最后三个字符。
mask = df['one'].str.endswith(('-01','-02'))
df['two'] = df['one'].isin(df[mask].squeeze().str[:-3])
df