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,很高兴它有帮助,若要将答案标记为已接受,请单击答案旁边的复选标记将其从灰色变为已填写,您可以查看[指南]