python-3.x - Pandas 创建没有周末的日期范围

标签 python-3.x pandas timestamp date-range

给定以下数据框:

import pandas as pd
df=pd.DataFrame({'A':['a','b','c'],
        'first_date':['2015-08-31 00:00:00','2015-08-24 00:00:00','2015-08-25 00:00:00']})
df.first_date=pd.to_datetime(df.first_date) #(dtype='<M8[ns]')
df['last_date']=pd.to_datetime('5/6/2016') #(dtype='datetime64[ns]')
df

    A   first_date   last_date
0   a   2015-08-31  2016-05-06
1   b   2015-08-24  2016-05-06
2   c   2015-08-25  2016-05-06

我想创建一个新列,其中包含 'first_date' 和 'last_date' 之间的日期列表(或数组),不包括周末。

到目前为止,我已经尝试过这个:
pd.date_range(df['first_date'],df['last_date'])

...但发生此错误:
TypeError: Cannot convert input to Timestamp

我在 pd.date_range 之前也试过这个...
pd.Timestamp(df['first_date'])

...但没有骰子。

提前致谢!

PS:

在这个障碍之后,我将尝试查看其他日期列表,如果它们属于生成的数组('A' 中的每一行),则从列表或数组中减去它们)。我会把它作为一个单独的问题发布。

最佳答案

freq='B'给你工作日,或者没有周末。

你的错误:

TypeError: Cannot convert input to Timestamp



是你将一个系列传递给 pd.date_range 的结果吗?期待 Timestamp 时的函数

相反,使用 apply .

但是,我仍然觉得将列表放入数据帧的特定单元格中很棘手。我使用的方式是使用 pd.Series([mylist]) .注意它是一个列表的列表。如果只是pd.Series(mylist) pandas 会将列表转换为一个系列,您会得到一系列作为数据框的系列。

尝试:
def fnl(x):
    l = pd.date_range(x.loc['first_date'], x.loc['last_date'], freq='B')
    return pd.Series([l])

df['range'] = df.apply(fnl, axis=1)

关于python-3.x - Pandas 创建没有周末的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37648967/

相关文章:

dictionary - dict.keys 不打印列表但打印 ListView 的问题

python - 在类中使用namedtuple

python - 有没有办法使用正则表达式组合多个字符串?

python - 为什么我收到错误 Error : module ‘string’ has no attribute ‘lower’ when I am using Pandas?

python - 如何聚合和绘制 pandas 数据框中的数据?

c - 时间戳比计时器短的同步计时器

javascript - Facebook 时间戳和 JavaScript

python-3.x - Kivy 雪碧图

python:改进我读取大型(5GB)txt 文件的方式

python 模块来解码 OSX plist 整数日期?