gpt4 book ai didi

python - Pandas:从 Pandas DataFrame 中选择两个日期之间的所有数据

转载 作者:行者123 更新时间:2023-12-03 16:49:42 26 4
gpt4 key购买 nike

我有 DataFrame,其中有一列包含事件日期(日期不是唯一的)。我需要选择此期间的所有数据。我接下来尝试:

start_day = datetime.date(datetime.strptime(start_day, '%d.%m.%Y')) #change user data to date format

end_day = datetime.date(datetime.strptime(end_day, '%d.%m.%Y'))

df = df[df['Transaction_date'].between(start_day, end_day)]

栏目类型 Transaction_datedatetime64[ns] .
当我运行带有 01/01/2020 期间的请求的代码时至 31/01/2020 - 指定期间的部分数据丢失(信息只显示21天,应该是31天)。

我看到数据框包含整个请求期间的数据。
你能帮我吗,我的错误在哪里?

最佳答案

我使用了以下测试数据框:

   Transaction_date  Value
0 2019-12-31 10
1 2020-01-10 10
2 2020-01-15 10
3 2020-01-20 10
4 2020-01-25 10
5 2020-01-28 10
6 2020-01-29 10
7 2020-01-30 10
8 2020-01-31 10
9 2020-02-01 10
10 2020-02-01 10

开始/结束日期是:
start_day = '01.01.2020'
end_day = '31.01.2020'

代码是:
# Convert start / end dates to datetime
start_day = pd.to_datetime(start_day)
end_day = pd.to_datetime(end_day)

我注意到您使用 datetime 模块,我认为这是一种不好的做法。
为此,请使用专用的 pandasonic 函数 (to_datetime)。
它甚至足够聪明,可以识别许多常用的日期格式,
所以没有必要自己指定。

要获得实际结果,请运行:
df[df['Transaction_date'].between(start_day, end_day)]

结果是:
  Transaction_date  Value
1 2020-01-10 10
2 2020-01-15 10
3 2020-01-20 10
4 2020-01-25 10
5 2020-01-28 10
6 2020-01-29 10
7 2020-01-30 10
8 2020-01-31 10

如您所见:
  • 2019 年的日期已被删除。
  • 输出仅包含一月份的日期,直到最后。
  • 2月初的日期也已被删除。

  • 在您的计算机上重复我的示例。也许你的问题的根源
    (结果不包含一月份的所有日期)在某个地方
    别的?

    关于python - Pandas:从 Pandas DataFrame 中选择两个日期之间的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60441851/

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