【问题标题】:use a function at the result of pandas .loc在 pandas .loc 的结果中使用函数
【发布时间】:2022-10-24 06:31:45
【问题描述】:

嗨偷看,

我想知道是否有可能在 pandas .loc 的结果中使用函数,或者是否存在更好的方法来做到这一点。

所以我想做的是:

如果该系列中的值为 =!0,则获取其他行的值并用作一个函数(在本例中为 get_working_days_delta)的参数,然后将结果放入同一系列中。

df.loc[(df["SERIES"] != 0), 'SERIES'] = df.apply(cal.get_working_days_delta(df["DATE_1"],df["DATE_2"]))

输出为:datetime64[ns] is of unsupported type (<class 'pandas.core.series.Series'>)

在这种情况下,使用的参数(df["DATE_1"] df["DATE_2"]) 被识别为整个系列而不是单元格值

我不想使用 .apply.at 因为这个 df 有超过 400 万行

【问题讨论】:

  • 欢迎来到Stack Overflow. 这不是代码编写或辅导服务。我们帮助解决具体的技术问题,而不是对代码或建议的开放式请求。请编辑您的问题以显示您迄今为止尝试过的内容,以及您需要帮助的具体问题。请参阅How To Ask a Good Question 页面,了解有关如何最好地帮助我们帮助您的详细信息。
  • 此外,在调试这样的分配时,首先确保右侧确实有效,然后再假设问题出在切片/左侧。在询问错误时,请始终查看并在 SO 帖子中包含 full traceback - 它包含非常重要的调试信息,例如会告诉您问题是在 .apply 还是作业中。
  • 如果你要传递一个系列,你需要写cal.get_working_days_delta 来操作一个系列。

标签: python pandas


【解决方案1】:

没有例子很难给出一个好的答案。

但我认为问题在于您需要在使用 apply 之前进行过滤。

尝试

df[df["SERIES"] != 0].apply(...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2018-02-17
    • 2021-10-30
    • 2020-07-28
    相关资源
    最近更新 更多