gpt4 book ai didi

python - Pandas 使用列表中的值替换字符串

转载 作者:行者123 更新时间:2023-12-01 00:56:08 25 4
gpt4 key购买 nike

我正在尝试替换数据框(df)内一列中的字符串。这是 df 的样子:

                           0                  1
0 2012 Black Toyota Corolla White/Black/Red
1 2013 Red Toyota Camry Red
2 2015 Blue Honda Civic Blue
3 2012 Black Mazda 6 Black/Red/White
4 2011 White Nissan Maxima White/Red/Black

有时,第 1 列有多个颜色值,有时只有一个值。我想获取第 1 列中的多个值,检查第 0 列中是否存在这些值,然后从第 0 列中删除该值。

我尝试过以这种方式处理它。

    def removeColor(main,sub):
for i in sub.split('/'):
main = main.str.replace(i, '')
return(main)
>>> df['0'] = df['0'].map(lambda x: removeColor(x['0'],x['2']))

这会导致类型错误。

TypeError: string indices must be integers

我的预期输出如下所示:

                     0                  1
0 2012 Toyota Corolla White/Black/Red
1 2013 Toyota Camry Red
2 2015 Honda Civic Blue
3 2012 Mazda 6 Black/Red/White
4 2011 Nissan Maxima White/Red/Black

最佳答案

map仅适用于系列。在你的lambda函数,x将是一个字符串(列“0”的值),所以当您执行 x["0"] 时和x["1"]它试图从字符串中获取索引,因此你的错误。

apply函数可以让您对整行(或列)进行操作,并且会更适合。这是实现您所追求的目标的一种方法:

import re

def remove_color(row):
return re.sub(row.iloc[1].replace("/", "|"), "", row.iloc[0]).replace(" ", " ")


df.iloc[:, 0] = df.apply(remove_color, axis=1)

您可以替换 iloc使用特定列名称进行调用以使其更具可读性(您提到列名称可以是任何名称,因此我在这里给出通用方法)。

第二个replace调用的目的是删除 re.sub 留下的多余空格。 。您可以修改您的re.sub在一次调用中即可完成此操作,但可能会变得困惑。

关于python - Pandas 使用列表中的值替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56245019/

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