繁体   English   中英

计算今天的日期和熊猫日期系列之间的日期差异

[英]calculate date difference between today's date and pandas date series

想要计算熊猫日期系列之间的天数差异 -

0      2013-02-16
1      2013-01-29
2      2013-02-21
3      2013-02-22
4      2013-03-01
5      2013-03-14
6      2013-03-18
7      2013-03-21

和今天的约会。

我试过但无法想出合乎逻辑的解决方案。 请帮助我的代码。 实际上我是 python 的新手,在应用任何函数时都会发生很多语法错误。

你可以做类似的事情

# generate time data
data = pd.to_datetime(pd.Series(["2018-09-1", "2019-01-25", "2018-10-10"]))
pd.to_datetime("now") > data

回报:

0    False
1     True
2    False

然后你可以用它来选择数据

data[pd.to_datetime("now") > data]

希望能帮助到你。

编辑:我看错了,但你可以很容易地改变这个例子来计算差异:

data -  pd.to_datetime("now")

回报:

0   -122 days +13:10:37.489823
1      24 days 13:10:37.489823
2    -83 days +13:10:37.489823
dtype: timedelta64[ns]

您可以尝试如下:

>>> from datetime import datetime
>>> df
        col1
0 2013-02-16
1 2013-01-29
2 2013-02-21
3 2013-02-22
4 2013-03-01
5 2013-03-14
6 2013-03-18
7 2013-03-21

确保将列名转换为_datetime:

>>> df['col1'] = pd.to_datetime(df['col1'], infer_datetime_format=True)

设置当前日期时间以进一步获取差异:

>>> curr_time = pd.to_datetime("now")

现在求差如下:

>>> df['col1'] - curr_time
0   -2145 days +07:48:48.736939
1   -2163 days +07:48:48.736939
2   -2140 days +07:48:48.736939
3   -2139 days +07:48:48.736939
4   -2132 days +07:48:48.736939
5   -2119 days +07:48:48.736939
6   -2115 days +07:48:48.736939
7   -2112 days +07:48:48.736939
Name: col1, dtype: timedelta64[ns]

使用 numpy,您可以像difference-two-dates-days-weeks-months-years-pandas-python-2一样解决它。 底线

df['diff_days'] = df['First dates column'] - df['Second Date column']

# for days use 'D' for weeks use 'W', for month use 'M' and for years use 'Y'
df['diff_days']=df['diff_days']/np.timedelta64(1,'D')      
print(df) 

如果你想要天作为 int 而不是 float 使用

df['diff_days']=df['diff_days']//np.timedelta64(1,'D')      

Converting To Timestamps下的 pandas 文档中,您会发现:

转换为时间戳要转换类日期对象的系列或类列表对象,例如字符串、纪元或混合,您可以使用to_datetime函数

我以前没有使用过熊猫,但这表明您的熊猫日期系列(类似列表的对象)是可迭代的,并且该系列的每个元素都是具有to_datetime函数的类的实例。

假设我的假设是正确的,下面的函数将采用这样的列表并返回一个 timedeltas' 列表(一个日期时间对象,表示两个日期时间对象之间的差异)。

from datetime import datetime

def convert(pandas_series):
    # get the current date
    now = datetime.now()

    # Use a list comprehension and the pandas to_datetime method to calculate timedeltas.
    return [now - pandas_element.to_datetime() for pandas_series]

# assuming 'some_pandas_series' is a list-like pandas series object
list_of_timedeltas = convert(some_pandas_series)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM