【问题标题】:Pandas creating new columns based on conditions熊猫根据条件创建新列
【发布时间】:2020-08-26 19:04:46
【问题描述】:

我有两个数据框 df1 和 df2。 df1 是一个包含各种列的数据框,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 多次重复”。

有人可以帮帮我吗?提前谢谢!

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

【问题讨论】:

  • 发布示例数据预期输出。
  • @Paul H 刚刚编辑

标签: python regex pandas dataframe partial-matches


【解决方案1】:

试试这个:

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

【讨论】:

  • 我收到语法错误。我认为这与括号有关。你有什么错误吗?
  • Nvm。弄清楚了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-12-24
  • 2019-03-27
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
  • 2018-11-06
  • 2022-12-06
相关资源
最近更新 更多