Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算今天的日期和熊猫日期系列之间的日期差_Python_Pandas - Fatal编程技术网

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

Python 计算今天的日期和熊猫日期系列之间的日期差,python,pandas,Python,Pandas,要计算日期系列之间的天数差- 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

要计算日期系列之间的天数差-

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
0   -122 days +13:10:37.489823
1      24 days 13:10:37.489823
2    -83 days +13:10:37.489823
dtype: timedelta64[ns]
然后您可以使用它来选择数据

data[pd.to_datetime("now") > data]
希望能有帮助

编辑:我误读了,但您可以很容易地更改此示例以计算差异:

data -  pd.to_datetime("now")
返回:

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

你可以这样做

# 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
0   -122 days +13:10:37.489823
1      24 days 13:10:37.489823
2    -83 days +13:10:37.489823
dtype: timedelta64[ns]
然后您可以使用它来选择数据

data[pd.to_datetime("now") > data]
希望能有帮助

编辑:我误读了,但您可以很容易地更改此示例以计算差异:

data -  pd.to_datetime("now")
返回:

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

从下面的熊猫文档中,您将发现:

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

我以前没有使用过pandas,但这表明您的pandas日期系列类似列表的对象是可编辑的,该系列的每个元素都是具有to_datetime函数的类的实例

假设我的假设是正确的,下面的函数将获取这样一个列表并返回一个timedelta的列表,一个datetime对象表示两个日期时间对象之间的差异

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)

从下面的熊猫文档中,您将发现:

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

我以前没有使用过pandas,但这表明您的pandas日期系列类似列表的对象是可编辑的,该系列的每个元素都是具有to_datetime函数的类的实例

假设我的假设是正确的,下面的函数将获取这样一个列表并返回一个timedelta的列表,一个datetime对象表示两个日期时间对象之间的差异

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)

您可以尝试以下操作:

>>> 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]

您可以尝试以下操作:

>>> 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,您可以像 . 底线

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')      

使用numpy,您可以像 . 底线

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')      

使用ser-pd.datetime.today.dt.days这里ser是您的数据类型datetime系列。欢迎使用堆栈溢出!问“请帮助我”的问题往往需要高度本地化的指导,或者在某些情况下,需要持续或私人协助,这不适合我们的问答形式。它也是相当模糊的,最好用一个更具体的问题来代替。请阅读。请添加一个和您尝试的。使用ser-pd.datetime.today.dt.days这里ser是您的数据类型datetime系列。欢迎使用堆栈溢出!问“请帮助我”的问题往往需要高度本地化的指导,或者在某些情况下,需要持续或私人协助,这不适合我们的问答形式。它也是相当模糊的,最好用一个更具体的问题来代替。请阅读。请添加a和您尝试的内容。@Shivam,很高兴它有帮助,若要将答案标记为已接受,请单击答案旁边的复选标记将其从灰色变为已填写,您可以选中[指南]@Shivam,很高兴它有帮助,若要将答案标记为已接受,请单击答案旁边的复选标记将其从灰色变为已填写,您可以查看[指南]