如何修复“系列的真值不明确。在 Python Pandas 中使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()”?

新手上路,请多包涵

我有一个数据集,其中有两个时间戳列,一个是开始时间,另一个是结束时间。我计算了差异并将其存储在数据集中的另一列中。根据数据集的差异列,我想在另一列中填充一个值。我正在使用 for 循环和 if else 相同但在执行时,错误“系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或a.all()”出现

   Time_df = pd.read_excel('filepath')

   print(Time_df.head(20))

   for index, rows in Time_df.head().iterrows():
         if(Time_df["Total Time"] < 6.00 ):
             Time_df["Code"] = 1

   print(Time_df.head(20))

在 Total Downtime 中,只要遇到小于 6 的地方,就会在列代码中放入 1。但是,我收到问题中所述的错误。

原文由 sumitpal0593 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 494
2 个回答

试试 np.where()


 df["Code"]= np.where(df["Total Time"]<6.00,1,df["Code"])

解释

 #np.where(condition, choice if condition is met, choice if condition is not met)
#returns an array explained above

原文由 anky 发布,翻译遵循 CC BY-SA 4.0 许可协议

这种事经常发生在我身上。在 if (Time_df["Total Time"] < 6.00 ) 中, (Time_df["Total Time"] < 6.00 ) 是一个系列,Python 不知道如何将该系列评估为布尔值。取决于你想要什么,但很可能你想做的是:

 Time_df.loc[Time_df["Total Time"] < 6.00, "Code"] = 1

只要“总时间”小于 6,它就会在“代码”列中放置 1。

原文由 Quang Hoang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题