【问题标题】:How to replace a column value based off a variable in python pandas?如何根据 python pandas 中的变量替换列值?
【发布时间】:2020-10-01 18:58:57
【问题描述】:

我正在编写基于列值自动分配变量名称的代码。该列包含一个长字符串,其中包含品牌和子品牌,需要用下划线分隔。

如:

data["column"][1] = "Sally's Seashells"

我需要改变它,使它看起来像这样:

data["column"][1] = "Sally's_Seashells"

我知道replace() 如果您只输入确切的品牌就可以工作,但我想为多个不同的数据集/品牌保持通用性。我希望有可能有一个变量从用户那里获取输入,该变量标识需要用下划线替换的字符串,例如:


    Brand = "Sally"

    data["column"].replace(Brand, Brand + '_', inplace = True)

    >>"Sally's_Seashells"

这样,我可以有一个适用于所有不同品牌的脚本,只需要最少的非程序员友好的调整。

另外,是否可以将replace() 排除在列表之外?如:

Brand_List = ["Sally's", "Tim's", "Bill Bob's"]

data["column"].replace(for brand in Brand_List: brand, brand + '_', inplace = True)

这将使用户识别多个品牌,然后在识别时添加下划线:

data["column"][1] = "Sally's_Seashells"
data["column"][2] = "Tim's_Towels"
data["column"][3] = "Bill Bob's_Beach Bums"
data["column"][4] = "Justin's Jams"

如果不替换,应用 lambda 函数是否可以用下划线替换 Brand_List 中的品牌?

我的主要问题不是所有品牌都有相同的命名格式,所以我不能用下划线替换空格以获得正确的名称格式。

感谢任何建议!

【问题讨论】:

  • 请分享数据和预期输出

标签: python pandas replace rename


【解决方案1】:

如果您知道所有产品名称,您也许可以将它们存储为列表,然后使用如下所示的嵌套 for 循环。 让我知道这是否是您正在寻找的。​​p>

Products = ["Towels", "Bums"]
Brands = ["Justing's Bums","Tim's Towels"]
for i in range(len(Brands)):
    for Product in Products:
        if Product== (Brands[i][-1*len(Product):]):
            Brands[i] = (Brands[i][-1*len(Product)-1:])+'_'+Product

【讨论】:

  • 品牌五花八门。有些有多个单词,有些特殊字符。这就是为什么我希望用户输入来放置需要用分号分隔的确切字符串名称。一个更现实的例子是 Brand = “Blue Diamond”。那么输出将是“Blue Diamond_Almonds”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 2020-06-22
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多