【发布时间】:2021-06-21 22:21:17
【问题描述】:
我正在寻找一种方法来搜索父任务列的关键字,然后添加一个新列并为其输入一个类别名称。例如,任何带有关键字(我的项目、学习技能、业务)的行都会在名为“类别”的列中有一个“我的项目”标签。
当前数据帧(csv 文件):
Start Date,Task Name,Duration (hours),Parent Task
01/02/2021,Sleeping ,1.33639,
02/02/2021,Sleeping ,6.43167,
02/02/2021,coding,0.78028,Learning a skill
02/02/2021,Commute,0.22694,
02/02/2021,reading,1.14778,My_projects
02/02/2021,Commute,0.56139,
02/02/2021,Prep,0.37611,
所需的数据帧(csv 文件):
Start Date,Task Name,Duration (hours),Parent Task, Category
01/02/2021,Sleeping ,1.33639,,Sleeping
02/02/2021,Sleeping ,6.43167,,Sleeping
02/02/2021,coding,0.78028,Learning a skill,My project
02/02/2021,Commute,0.22694,,Commute
02/02/2021,reading,1.14778,My projects, My project
02/02/2021,Commute,0.56139,, Commute
02/02/2021,Prep,0.37611,, Prep
我一直在尝试应用这种方法:
My_projects_tasks = '|'.join(['My_projects', 'Learning a skill', 'Business'])
if df['Parent Task'].str.contains( My_projects_tasks , na=False):
df['Category'] = 'My_project'
但是我收到了这个错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有没有更有效的方法来解决这个问题?因为我要添加多个类别并且有很多行? 然后,我想总结每天每个类别的所有持续时间,并在不同的 CSV 文件中显示,但我还没有做到这一点。 谢谢
【问题讨论】:
-
请在文本中包含您的 df,以便轻松复制以重现您的问题。还要发布您想要的 df,因为很难理解您的目标是什么。
标签: python pandas dataframe filtering