根据条件创建新列

2024-06-23 19:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧df1df2df1是一个具有各种列的数据框,df2是一个只有一列的数据框col2,这是一个单词列表

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

基本上,我想在df1中创建一个名为col_new的新列,如果值与df1中的col1中的值部分匹配,则该列已从df2中的col2复制了值

例如,如果col2 = "apple"col1 = "im.apple3",那么我想将值"apple"复制或赋值给col_new,依此类推

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

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

有人能帮我吗?提前谢谢你

编辑2:第一个问题解决了。有人能帮我解决第二个问题吗

编辑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

Tags: 数据代码appledfnew错误colsec
1条回答
网友
1楼 · 发布于 2024-06-23 19:15:25

试试这个:

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

相关问题 更多 >

    热门问题