0

我有两个数据框df1df2. df1是一个具有各种列的数据框,并且df2是一个只有一列的数据框col2,它是一个单词列表。

这显然是错误的,但到目前为止我的代码是:df1["col_new"] = df1[df1["col1"]].str.contains(df2["col2"])

基本上,我想创建一个名为col_newin的新列,如果值与 in中的值部分匹配,则该列df1已从col2in复制值。df2col1df1

例如,如果col2 = "apple"and col1 = "im.apple3",那么我想将值复制或分配给"apple"等等col_new

我的另一个问题是在 in 中的字符串中找到第二个大写字母的索引/col1位置df1

我在这里发现了一个类似的问题并编写了这段代码:df["sec_upper"] = df["col1"].apply(lambda x: re.research("[A-Z]+{2}",x).span())[1]但我收到一条错误消息,提示“在位置 6 多次重复”。

有人可以帮我吗?先感谢您!

EDIT2:第一个问题解决了。谁能帮我解决第二个问题?

编辑1:

示例数据框:

df1

col1             
im.apple3     
Cookiemm      
Hi_World123


df2

col2
apple
cookie
world
candy
soda

预期输出:

col1          new_col     sec_upper
im.apple3     apple       NaN
Cookiemm      cookie      NaN
Hi_World123   world       4
4

1 回答 1

0

尝试这个:

df1['new_col'] = df1['col1'].str.lower().str.extract(f"({'|'.join(df2['col2'])})")

输出:

          col1 new_col
0    im.apple3   apple
1     Cookiemm  cookie
2  Hi_World123   world
于 2020-08-26T20:54:48.750 回答