gpt4 book ai didi

python - 如果等于另一个 pandas 列,则从 pandas 列中删除字符串的右侧部分

转载 作者:行者123 更新时间:2023-12-04 15:04:52 25 4
gpt4 key购买 nike

当我试图获取 pandas 数据框的字符串的左侧部分时,我有一个 nan 值,其中左侧条件取决于数据框另一列中单元格的长度:

df 的例子:

<表类="s-表"><头>短语颜色<正文>保罗喜欢红色红色迈克喜欢绿色绿色约翰喜欢蓝色蓝色

我的目标是在“like {Color}”之前获得短语 => 的第一部分的系列。这将是:

|名字|

|保罗 ||迈克 ||约翰 |

我尝试调用下面的函数:

df["First  Name"] = df["Phrase"].str[:- df["Color"].str.len() - 6]

但我一直有 Nan 值结果。看来我的颜色长度计算无法传输到我的 str[:-x]功能。

有人可以帮助我了解这里发生的事情并找到解决方案吗?

非常感谢。祝你有美好的一天。

最佳答案

考虑下面的df:

In [128]: df = pd.DataFrame({'Phrase':['Paul like red', 'Mike like green', 'John like blue', 'Mark like black'], 'Color':['red', 'green', 'blue', 'brown']})

In [129]: df
Out[129]:
Phrase Color
0 Paul like red red
1 Mike like green green
2 John like blue blue
3 Mark like black brown

使用numpy.where :

In [134]: import numpy as np

In [132]: df['First Name'] = np.where(df.apply(lambda x: x['Color'] in x['Phrase'], 1), df.Phrase.str.split().str[0], np.nan)

In [133]: df
Out[133]:
Phrase Color First Name
0 Paul like red red Paul
1 Mike like green green Mike
2 John like blue blue John
3 Mark like black brown NaN

关于python - 如果等于另一个 pandas 列,则从 pandas 列中删除字符串的右侧部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66373411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com