python - Pandas 以某种模式向前提供日间范围而不是向后

标签 python python-2.7 pandas datetime

我正在尝试以列表格式获取 3 天的回溯日期。到目前为止我所做的是:

        datelist = pd.date_range(pd.datetime.today(), periods=3).tolist()
    >>> datelist
    [Timestamp('2018-01-31 20:03:51.068944', freq='D'), Timestamp('2018-02-01 20:03:51.068944', freq='D'), Timestamp('2018-02-02 20:03:51.068944', freq='D')]
    >>> datelist = pd.date_range(pd.datetime.today(), periods=-3).tolist()
    >>> datelist
    []
    >>> datelist = pd.date_range(pd.datetime.today()-1, periods=-3).tolist()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'int'

首先,我得到了 3 天的远期日期。

但我想要向后 3 天而不是向前,但如果我执行 -3 它会给出 []。我愿意过今天的日子……指的是今天的前一天。但出现错误。

我愿意获取以下格式的输出列表:

datelist = ['20180130','20180129','20180128']

请建议我可以尝试什么。

最佳答案

从今天起由 date_range 生成首先减去过去的第一天并添加 sort_valuesstrftime :

N = 3
datelist = (pd.date_range(pd.datetime.today() - pd.offsets.DateOffset(days=N), periods=N)
              .sort_values(ascending=False)
              .strftime('%Y%m%d'))
<小时/>
datelist = (pd.date_range(pd.datetime.today() - pd.Timedelta(days=N), periods=N)
             .sort_values(ascending=False)
             .strftime('%Y%m%d'))

print (datelist)
['20180130' '20180129' '20180128']
<小时/>

第一个答案:

使用列表理解:

a = [(x - pd.offsets.DateOffset(days=3)).strftime('%Y%m%d') for x in datelist]
<小时/>
a = [(x - pd.Timedelta(days=3)).strftime('%Y%m%d')  for x in datelist]
print (a)
['20180128', '20180129', '20180130']

或者转换为DatetimeIndex并减去Timedelta:

a = (pd.DatetimeIndex(datelist) - pd.Timedelta(days=3)).strftime('%Y%m%d').tolist()
<小时/>
a = (pd.DatetimeIndex(datelist) - pd.offsets.DateOffset(days=3)).strftime('%Y%m%d').tolist()

关于python - Pandas 以某种模式向前提供日间范围而不是向后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48544798/

相关文章:

python - 如何将从用户输入生成的字符串转换为列表或整数?

Python SMTP 错误代码处理

python - 打印日志文件的特定行 - Python

python - Python 2.7 中使用列表理解的多个 with 语句

python - 使用来自 pandas DataFrame 的数据拟合 sklearn 的 SVM 分类器

python - 从给定的位数计算可能的最大值

python - 使用 sympy 简化嵌套指数和对数

python - 如何在 Python 中使用正则表达式从 url 中提取特定模式?

pandas - 如何找到 Pandas 时间序列的周期性(如果存在)?

python - 如何使用自定义 header 将 pandas.DataFrame 写入 csv 文件?