Python 以分钟为单位计算时差

Python 以分钟为单位计算时差,python,time,pandas,Python,Time,Pandas,我正在读一个有时间(小时和分钟)和IP地址的文本文件。然后我想得到时差,每5分钟做一些活动。 以下代码不计算时间差 示例文本文件: 06:03 65.55.215.62 06:04 157.56.92.152 06:04 66.249.74.175 06:05 173.199.116.171 代码: 您可以使用该模块 印刷品: [1, 0, 1] 您可以使用该模块 印刷品: [1, 0, 1] 应使用将csv读入数据帧: In [1]: df = pd.read_csv(file_name

我正在读一个有时间(小时和分钟)和IP地址的文本文件。然后我想得到时差,每5分钟做一些活动。 以下代码不计算时间差

示例文本文件:

06:03 65.55.215.62
06:04 157.56.92.152
06:04 66.249.74.175
06:05 173.199.116.171
代码:

您可以使用该模块

印刷品:

[1, 0, 1]
您可以使用该模块

印刷品:

[1, 0, 1]
应使用将csv读入数据帧:

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
Pandas还没有任何内置的时间对象,在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
不仅仅是因为你做不到。不管怎么说,我认为如果没有年/月/日,你会陷入一个棘手的境地,首先,如何应对午夜

让我们重新开始,假设你有约会时间

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
然后,您可以使用以下工具找出差异:

容易得多。:)

您应该使用将csv读入数据帧:

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
Pandas还没有任何内置的时间对象,在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
不仅仅是因为你做不到。不管怎么说,我认为如果没有年/月/日,你会陷入一个棘手的境地,首先,如何应对午夜

让我们重新开始,假设你有约会时间

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
然后,您可以使用以下工具找出差异:



容易得多。:)

df['tvalue']-df['tvalue']
==0,如果
df[0]
是一个数字。这有一些instructions@Elazar它给出了相同的错误…TypeError:-:“str”和“str”的操作数类型不受支持,这是因为您从文件中读取了
str
。也许你想要
t,ip=line.split(“”);t=int(t);时间ip.append([t,ip])
如果没有日期部分,这实际上是非常棘手的,而且不明确。
df['tvalue']-df['tvalue']
==0,如果
df[0]
是一个数字。这有一些instructions@Elazar它给出了相同的错误…TypeError:-:“str”和“str”的操作数类型不受支持,这是因为您从文件中读取了
str
。也许你想要
t,ip=line.split(“”);t=int(t);时间ip.append([t,ip])如果没有日期部分,这实际上是非常棘手的,而且是不明确的。for line in open('minutes'):times=line.split()[::2]dates=[datetime.datetime.strtime(i,%H:%M')for i in times]differences=[j-i for i,j in zip(dates[:-1],dates[1:])]print[divmod(i.seconds,60)for i in differences]……这只是打印一个emty数组@Haidro@NilaniAlgiriyage更新对于简单的文件来说这很好,但是对于大数据文件来说输出是如此混乱,如何逐行打印?@nilanialigriyage我将解释输出。元组中的第一项是差异的分钟数。第二个是秒数,如果有余数(即,如果有61秒)@NilaniAlgiriyage我已经更改了输出,所以现在它只返回打开的行的分钟差('minutes'):times=line.split()[::2]dates=[datetime.datetime.strtime(i,%H:%M')in times]differences=[j-i for i,j in-zip(日期[:-1],日期[1:])]打印[divmod(i.seconds,60)表示i的差异]……这只是打印一个emty数组@Haidro@NilaniAlgiriyage更新对于简单文件来说这很好,但是对于大数据文件,输出非常混乱,如何逐行打印?@Nilanialigriyage我将解释输出。元组中的第一项是差异的分钟数。第二项是秒数,如果有一个余数(即,如果有61秒)@NilaniAlgiriyage我已经更改了输出,所以现在它只返回分钟差异。为什么会出现此错误?AttributeError:“模块”对象没有属性“to_datetime”@AndyHayden@NilaniAlgiriyage您正在使用哪个版本的pandas?您需要升级到最新的稳定版本。:)df['time'].shift()生成与IPs相同的输出@Andy HaydenI不明白你的意思,确切的输出如上图所示?IP列仍然存在?在执行shift()之后为什么会出现此错误?AttributeError:“module”对象没有属性“to_datetime”@AndyHayden@NilaniAlgiriyage你用的是哪种版本的熊猫?您需要升级到最新的稳定版本。:)df['time'].shift()使用IPs生成相同的输出@Andy HaydenI不明白你的意思,确切的输出如上图所示?IP列仍然存在?在执行shift()之后