Pandas问题:将非Completed状态行的Date列置空时.loc报错
解决方法
你的错误出在连续赋值上:df = df.loc[df['Status'] != 'Completed', 'Date'] = '' 这个语句会先把符合条件的Date列值设为空字符串,然后把这个空字符串赋值给变量df,导致df从DataFrame变成了字符串,后续再调用.loc自然会报错。
正确的写法是直接使用.loc原地修改原DataFrame,不需要重新赋值给df:
import pandas as pd df = pd.DataFrame({'Status': ['','To Do', '','Completed', 'To Do', 'In Progress', 'Completed'], 'Date': ['','9/1/2022','','12/5/2019','8/12/2020','4/19/2020','12/31/2018']}) # 正确的赋值方式 df.loc[df['Status'] != 'Completed', 'Date'] = '' print(df)
执行后输出的结果:
Status Date 0 1 To Do 2 3 Completed 12/5/2019 4 To Do 5 In Progress 6 Completed 12/31/2018
这样就完成了将Status列不为Completed的行的Date列置空的需求。
内容的提问来源于stack exchange,提问作者Michael Kessler
相关产品推荐
相关产品推荐

