我希望创建/更新一个新列,如果列中的文本 A包含一个字符串。它在没有forloop的情况下工作,但是当我尝试迭代时,它会设置默认值,而不是检测到的值
当然,我不应该手动添加同一行171次,我已经搜索了互联网等可能的提示和或解决方案,似乎找不到任何好的信息
工作代码:
df['dept'] = np.where(df.a.str.contains("PHYS"), "PHYS", "Unknown")
但当我尝试时:
depts = ['PHYS', 'PSYCH']
for dept in depts:
df['dept'] = np.where(df.a.str.contains(dept), dept, "Unknown")
print(dept)
我得到了所有的“未知数”,但正确地打印出了每个部门。我还试图通过显式声明dept = str(dept)
来确保部门作为字符串输入,但没有效果
提前感谢您的帮助。我觉得这是一个简单的问题,应该很容易解决,但我遇到了一个障碍
@U-12-Forward有一个很好的解决方案,如果只假设有一个新列的标题是字符串'dept',而不是循环中每个
dept
变量的值如果目的是为
depts
中的每个dept
创建一个新列,则删除列索引器中“dept”周围的引号:该示例令人困惑,因为由于变量名的原因,不清楚每个
dept
(即PHYS,PSYCH)是否应该有一个新列这段摘录不会“起作用”,因为它会用“PSYCH”和“Unknown”(没有“PHYS”)的组合来覆盖第二个作业的
df['dept']
如果列
a
中没有包含depts
中最后一个元素的字符串,那么您所描述的肯定会发生,因为最后一个np.where
的结果将是所有False
,因此返回完整的“未知”序列我更喜欢
str.extract
:或:
两个代码都输出:
我们通常这样做
相关问题 更多 >
编程相关推荐