csv文件中的两列,如下所示。我想检查每个日期间隔,
即
'2013-11-01'-'2013-10-08',
'2013-12-02'-'2013-11-01'等。
之后
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'
出了什么问题,我该如何纠正?谢谢。
答案 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))