【问题标题】:If str1 in row of col==str in row of another col, set str1=str2 of third col如果 col 的行中的 str1==str 在另一个 col 的行中,则设置第三个 col 的 str1=str2
【发布时间】:2020-12-21 23:39:26
【问题描述】:

我有一个合并的数据框,我想在其中检查“profile”列中包含的每个字符串与“right_side”列中的每个字符串。如果这两个字符串相等,我想将“profile”列中的 str 替换为“left_side”列中的 str。出于某种原因,我对此感到非常困难,并且尝试了 .loc、dict、map 和 .at 方法,但必须缺少一个组件,每个组件都没有工作。这是数据框:

profile             left_side                       right_side
DevOps Developer    NaN                             NaN     
Software Developer  Software Development Developer  Software Developer
Software Developer  Software Development Developer  Software Developer
Quality Assurance   Quality Assurance Engineer      Quality Assurance

非常感谢您的帮助!

【问题讨论】:

  • 您好,您能提供一张您的预期结果的样本表吗?

标签: python pandas replace pandas-loc


【解决方案1】:
df.loc[(df["Profile"]==df["right_side"]),"Profile"]=df["left_side"]
print(df)

                          Profile  ...          right_side
0                DevOps Developer  ...                 NaN
1  Software Development Developer  ...  Software Developer
2  Software Development Developer  ...  Software Developer
3      Quality Assurance Engineer  ...   Quality Assurance

[4 rows x 3 columns]

这就是你想要的吗?

【讨论】:

  • 天哪,是的。我试过: df.loc[df.profile.isin(df.right_side), ["left_side"]] = df["left_side"] 并且很接近但不完全在那里。谢谢!!!
【解决方案2】:

这是我使用 lambda 的尝试:

data["profile"] = data.apply(lambda x: x[1] if x[0] == x[2] else x[0], axis=1)

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多