将列表与Python中的日期进行比较

将列表与Python中的日期进行比较,python,python-3.x,pandas,numpy,date,Python,Python 3.x,Pandas,Numpy,Date,你好,我有这个名单: b = [[2018-12-14, 2019-01-11, 2019-01-25, 2019-02-08, 2019-02-22, 2019-07-26], [2018-06-14, 2018-07-11, 2018-07-25, 2018-08-08, 2018-08-22, 2019-01-26], [2017-12-14, 2018-01-11, 2018-01-25, 2018-02-08, 2018-02-22, 2018-07-26]] dty

你好,我有这个名单:

b = [[2018-12-14, 2019-01-11, 2019-01-25, 2019-02-08, 2019-02-22, 2019-07-26],
    [2018-06-14, 2018-07-11, 2018-07-25, 2018-08-08, 2018-08-22, 2019-01-26],
    [2017-12-14, 2018-01-11, 2018-01-25, 2018-02-08, 2018-02-22, 2018-07-26]]

dtype: datetime64[ns]]
我想知道是否有可能将这份日期列表与另一个日期进行比较。我是这样做的:

r = df.loc[(b[1] > vdate)]
与:

输出是正确的,因为它选择了满足条件的值。但问题是我想对所有列表值都这样做。比如:

r = df.loc[(b > vdate)] # Without [1]
但这会像我预期的那样作为输出得到一个错误。 我尝试了一些for-loop,它似乎很有效,但我不确定:

g = []
for i in range(len(b)):
    r = df.loc[(b[i] > vdate)]
    g.append(r)

非常感谢您抽出时间,任何帮助都将是完美的

如果您想浏览整个列表,只需使用以下方法:

ds['new_list'] = ds['list_dates'].apply(function)

使用.apply()方法通过函数处理列表

可以使用@Joseph Developer所述的apply函数,但简单的列表理解不需要编写函数。下面将为您提供一个布尔值列表,告诉您每个日期是否大于vdate:

如果您想将其直接包含在数据帧中,您可以编写:

df['is_after_b'] = [ x > vdate for x in df.b]
假设b是df的一列,顺便说一句,哪个btw会确保b的长度和数据帧的列匹配

编辑

我没有认为B是一个列表,你需要用b:
flat_b = [item for sublist in b for item in sublist]
您现在可以使用:

is_after_b = [x > vdate for x in flat_b]

如果您的日期<超过列表中的每个日期,您希望使用布尔值吗?现在
b
是一个列表列表。您可能希望使用for循环遍历单个ListQuestion而不是clear@DawidFieluba不,当我的日期小于列表中的每个日期时,我想要df的值。感谢您花时间阅读,然后在列表中找到最短日期,并检查
数据框
值是否小于该单个日期。如果b不是数据框的一列,这是一种方法吗?我有一种方法可以使用iloc[]将布尔输出作为列,但我不知道如何将其转换为值。我编辑了我的答案,现在它应该可以完美地工作。列表理解比循环和使用.loc更快,有关这方面的更多信息,请参阅
flat_b = [item for sublist in b for item in sublist]
is_after_b = [x > vdate for x in flat_b]