Вы должны использовать read_csv
для чтения CSV в DataFrame:
In [1]: df = pd.read_csv(file_name, sep='\s+', header=None, names=['time', 'ip'])
In [2]: df
Out[2]:
time ip
0 06:03 65.55.215.62
1 06:04 157.56.92.152
2 06:04 66.249.74.175
3 06:05 173.199.116.171
Панды нет (пока) есть любые встроенные в объект времени, и делать это в Python не просто. .. вы можете сделать столбец времени временных объектов:
In [3]: df['time'] = df['time'].apply(lambda x: datetime.time(*map(int, x.split(':'))))
In [4]: df
Out[4]:
time ip
0 06:03:00 65.55.215.62
1 06:04:00 157.56.92.152
2 06:04:00 66.249.74.175
3 06:05:00 173.199.116.171
не в последнюю очередь потому, что вы не можете сделать arithmetic on datetime.time objects. Во всяком случае, я думаю, вы собираетесь попасть в липкую ситуацию, не имея здесь год/месяц/день, с одной стороны, как бороться с полуночью?
Итак, давайте начнем снова, если вы имели DateTime ...
In [5]: df = pd.read_csv(file_name, sep='\s+', header=None, names=['time', 'ip'])
In [6]: df['time'] = pd.to_datetime(df['time']) # let's use todays
In [7]: df
Out[7]:
time ip
0 2013-06-12 06:03:00 65.55.215.62
1 2013-06-12 06:04:00 157.56.92.152
2 2013-06-12 06:04:00 66.249.74.175
3 2013-06-12 06:05:00 173.199.116.171
Тогда вы можете получить на разницу с помощью shift
:
In [8]: df['time'].shift()
Out[8]:
0 NaT
1 2013-06-12 06:03:00
2 2013-06-12 06:04:00
3 2013-06-12 06:04:00
Name: time, dtype: datetime64[ns]
In [9]: d['time'] - df['time'].shift()
Out[9]:
0 NaT
1 00:01:00
2 00:00:00
3 00:01:00
Name: time, dtype: timedelta64[ns]
Намного проще. :)
'df ['tvalue'] - df ['tvalue']' == 0, если 'df [0]' - число. – Elazar
http://pandas.pydata.org/pandas-docs/dev/timeseries.html#time-deltas это имеет некоторые инструкции –
@ Elazar IT дает ту же ошибку ... TypeError: неподдерживаемый тип операндов для -: 'str' и 'str' –