gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:29:18 27 4
gpt4 key购买 nike

你好,我有这个列表:

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)]

与:

vdate = dt.date(2018, 9, 19) 

输出是正确的,因为它选择了满足条件的值。但问题是我想对所有列表值执行此操作。像这样的东西:

r = df.loc[(b > vdate)] # Without [1]

但这正如我预期的那样作为输出出现错误。我尝试了一些 for 循环,看起来它有效,但我不确定:

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

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

最佳答案

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

is_after_b = [x > vdate for x in b]

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

df['is_after_b'] = [ x > vdate for x in df.b]

假设 b 是 df 的一列,顺便说一句,这将确保 b 的长度与 DataFrame 的列匹配。

编辑

我不认为 b 是列表的列表,您需要使用以下方法压平 b:

flat_b = [item for sublist in b for item in sublist]

您现在可以使用:

is_after_b = [x > vdate for x in flat_b]

关于python - 将列表与 Python 中的 pandas 中的日期进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com