给定以下数据帧:
df = pd.DataFrame({"code": ["codeA",
"Codeb",
"codeB",
"codea",
"N/A",
"N/A"],
"warehouse": [20,
30,
10,
30,
10,
70]})
我需要根据三个条件在列中设置一个变量:
伪代码:
# account for case: make case insensitive
if value REGEX '(?i)codeA':
value = "product A"
else if value REGEX '(?1)codeB':
value = "product B"
else
value = ""
我会使用带有apply
的函数吗
我可以做前两件事,比如:
df['code'].replace(to_replace="(?i)CodeA", value="Product A", inplace=True, regex=True)
df['code'].replace(to_replace="(?i)CodeB", value="Product B", inplace=True, regex=True)
然而,我一直在试图说:“如果它与其中任何一个都不匹配,那么设置为”“。”。还想知道是否有更有效的方法使用“else”子句来实现这一点
注意:理想的解决方案是考虑输入中的人为错误——例如,不区分大小写。然而,我事先做了一个strip
来解释尾随空格和前导空格
使用dict映射
输出:
根据到另一列的映射设置列值的更通用方法是使用map
出去
如果您所做的只是字符串替换,则可以通过以下方式执行:
出去
相关问题 更多 >
编程相关推荐