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

标签 python pandas numpy

背景

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

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/

相关文章:

java - 生成字符串的所有 k 大小的字谜

python - 如何使用 SerializerMethodField 创建延迟字段?

python - 如果值重叠,则合并 pandas dfs 列,否则分配默认值

python - 在更新值时扩展 numpy 数组

python - 读取跨书数据集时出现 CParserError : Error tokenizing data.

python - 使用 Python 和 pandas 无法正确填充 MySQL 计数器列

python - 从旧数据框创建子列

python - 使用 Word2Vec 的文本相似度

python - 在 cython 中正确使用 numpy recarrays 作为 c structarrays

python - 向量化在 ndarray 的子数组上操作的函数