【发布时间】:2021-09-28 17:12:30
【问题描述】:
我有以下代码:
data['ShortLongFlag'] = data['End DateTime'].apply(lambda x:
-1 if (x.month == 3 and x.date() in shortlongdates == True) else (1 if (x.month == 10 and x.date() in shortlongdates == True) else 0))
我想要做的是:
在我的数据框中创建一个新列,根据以下条件填充 -1、0 或 1:
- -1 如果我的 datetime 列中的值的月份等于 3 并且日期在我的名为“shortlongdates”的日期列表中
- 1 如果我的日期时间列中的值的月份等于 10 并且日期在我的名为“shortlongdates”的日期列表中
- 0 否则
现在所有值都在新列中输出为 0...为什么?
【问题讨论】:
-
没有理由不在这里创建适当的函数,而是尝试将内容压缩成
lambda -
你能分享一些数据吗?
-
@roganjosh 你有什么建议吗?或者你能解释一下为什么 lambda 不起作用?对我来说并没有那种压缩感
-
lambda 是函数。见*.com/questions/16501/what-is-a-lambda-function/…问题是我们必须疯狂滚动才能阅读你的功能
-
@SlowlyLearning 问题不在于我们不知道如何滚动;)而是将所有内容放在一行中本质上是不可读的。
标签: python pandas date datetime lambda