gpt4 book ai didi

python - 根据条件填充数据框行的值

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

背景

我有一个如下所示的数据集:

product_name    price
Women's pant 20.00
Men's Shirt 30.00
Women's Dress 40.00
Blue Shirt 30.00
...

我想创建一个名为

的新列

gender

这将包含基于 product_name 字符串的值 Women、Men 或 Unisex

想要的结果应该是这样的:

product_name    price   gender
Women's pant 20.00 women
Men's Shirt 30.00 men
Women's Dress 40.00 women
Blue Shirt 30.00 unisex

我的方法

我想首先我应该创建一个新列,每行都有一个空白值。然后我应该遍历数据框中的每一行并检查字符串 df[product_name] 以查看它是男装、女装还是中性并填写相应的性别行值。

这是我的代码:

df['gender'] = ""
for product_name in df['product_name']:
if 'women' in product_name.lower():
df['gender'] = 'women'
elif 'men' in product_name.lower():
df['gender'] = 'men'
else:
df['gender'] = 'unisex'

但是,我得到以下结果:

product_name    price   gender
Women's pant 20.00 men
Men's Shirt 30.00 men
Women's Dress 40.00 men
Blue Shirt 30.00 men

我非常感谢这里的一些帮助,因为我是 python 和 pandas 库的新手。

最佳答案

您可以使用带有 if/else 的列表理解来获取输出:

df['gender'] = ['women' if 'women' in word 
else "men" if "men" in word
else "unisex"
for word in df.product_name.str.lower()]

df

product_name price gender
0 Women's pant 20.0 women
1 Men's Shirt 30.0 men
2 Women's Dress 40.0 women
3 Blue Shirt 30.0 unisex

或者,您可以使用 numpy select实现相同的结果:

cond1 = df.product_name.str.lower().str.contains("women")
cond2 = df.product_name.str.lower().str.contains("men")
condlist = [cond1, cond2]
choicelist = ["women", "men"]
df["gender"] = np.select(condlist, choicelist, default="unisex")

通常,对于字符串,python的迭代要快得多;不过你必须测试一下。

关于python - 根据条件填充数据框行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62887405/

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