熊猫计算数据框行中的日期差异

时间:2019-08-09 07:21:08

标签: python pandas dataframe

csv文件中的两列,如下所示。我想检查每个日期间隔,

'2013-11-01'-'2013-10-08',

'2013-12-02'-'2013-11-01'等。

enter image description here

之后

df = pd.read_csv(f, sep='\t')
df_date = df["Date"]

我尝试过:

print (df["Date"].shift(-1) - df["Date"]).astype('timedelta64[d]')

print df['Date'].shift() - df['Date']

他们两个都回来了:

TypeError: unsupported operand type(s) for -: 'str' and 'str'

出了什么问题,我该如何纠正?谢谢。

1 个答案:

答案 0 :(得分:2)

问题是列Date是日期时间的已填充字符串repr,因此首先需要进行转换-例如通过parse_dates参数或to_datetime,然后调用Series.diff

df = pd.read_csv(f, sep='\t', parse_dates=['Date'])

print (df["Date"].diff(-1))

另一种解决方案:

df = pd.read_csv(f, sep='\t')
df["Date"] = pd.to_datetime(df["Date"])
print (df["Date"].diff(-1))