我想用'B'中的日期减去'A'中的日期,然后用差值添加一个新列。
df
A B
one 2014-01-01 2014-02-28
two 2014-02-03 2014-03-01
我已经尝试了下面的方法,但是当我尝试将其包含在for循环中时得到一个错误…
import datetime
date1=df['A'][0]
date2=df['B'][0]
mdate1 = datetime.datetime.strptime(date1, "%Y-%m-%d").date()
rdate1 = datetime.datetime.strptime(date2, "%Y-%m-%d").date()
delta = (mdate1 - rdate1).days
print delta
我该怎么办?
5条答案
按热度按时间h5qlskok1#
要删除'days'文本元素,您还可以使用系列的dt()访问器:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.html
所以,
该函数返回:
nwnhqdif2#
假设这些是datetime列(如果它们不是apply
to_datetime
),你可以减去它们:frebpwbc3#
列表理解是你最好的选择,因为它是最Python(也是最快)的方法:
1.我将返回时间增量(例如“-58天”)
如果你的列不是日期时间格式。较短的语法是:
df.A = pd.to_datetime(df.A)
p1iqtdky4#
不如这样:
twh00eeo5#
上面的解决方案对我不起作用。如果你使用一个简单的
pd.to_datetime()
首先转换它,稍后你可以用途: