gpt4 book ai didi

python - 为什么 pd.date_range 返回一个空序列?

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:16 31 4
gpt4 key购买 nike

pd.date_range 不接受开始和结束日期的字符串变量。我将我的开始和结束日期作为来自另一个数据框的变量:

start_date = yoy_traffic_df['dt'].iloc[0]
end_date = yoy_traffic_df['dt'].iloc[-1]

print(yoy_traffic_df['dt'].iloc[[0, -1]].to_dict())
{0: '2018-09-14', 5567: '2018-03-28'}

start_date 和 end_date 都是字符串类型:

print(type(start_date),type(end_date))
<class 'str'> <class 'str'>

print(end_date,start_date)
2018-09-14 2018-03-28

dates = pd.Series(pd.date_range(start=start_date, end=end_date, freq='D'))
Series([], dtype: datetime64[ns])

如果我将变量设置为特定日期,它 pd.date_range 会给出想要的输出

start_date = '2018-03-28'
end_date = '2018-09-14'

d = pd.Series(pd.date_range(start=start_date, end=end_date, freq='D'))
d.head()

0 2018-03-28
1 2018-03-29
2 2018-03-30
3 2018-03-31
4 2018-04-01
dtype: datetime64[ns]

预期的输出是一个 series.head() 之类的

0   2018-03-28
1 2018-03-29
2 2018-03-30
3 2018-03-31
4 2018-04-01

最佳答案

看来 end_date 早于 start_date

start_date = yoy_traffic_df['dt'].iloc[0]
end_date = yoy_traffic_df['dt'].iloc[-1]

start_date < end_date
# False

所以 date_range 变成空的:

pd.date_range(start_date, end_date)
# DatetimeIndex([], dtype='datetime64[ns]', freq='D')

这类似于 python 的 range 的工作方式(list(range(5, 1)) 打印出一个空列表)。最好的解决方法是调用 minmax

start_date, end_date = yoy_traffic_df['dt'].min(), yoy_traffic_df['dt'].max()

尽管如果您特别想要第一个和最后一个(不一定是最小值或最大值),请编写一些代码来交换它们。

if start_date > end_date:
start_date, end_date = end_date, start_date

关于python - 为什么 pd.date_range 返回一个空序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56743476/

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