DateTime的更改返回以熊猫为单位的0

时间:2019-10-15 07:27:21

标签: python pandas

我的数据如下:

01.02.2019 0:00

,其格式为日期,月份,年份 小时:分钟

当我试图找到几分钟内的时间变化时:

df['DateTime']=pd.to_datetime(df['DateTime'],infer_datetime_format=True,errors='coerce', format="%d.%m.%Y %H:%M")
df['dt'] = (df['DateTime']-df['DateTime'].shift(1)).astype('timedelta64[m]')

Pandas返回零值:

0           NaN
1           0.0
2           0.0
3           0.0
4           0.0
            ... 
14022907    0.0
14022908    0.0
14022909    0.0
14022910    0.0
14022911    0.0
Name: dt, Length: 14022912, dtype: float64

我有类似的数据,但格式为 Date.Month.Year (<日期>小时,分钟:秒 ) 我使用了相同的方法,但是我不是在计算分钟,而是在计算分钟,而是很好:

df['DateTime']=pd.to_datetime(df['DateTime'],infer_datetime_format=True,errors='coerce', format="%d.%m.%Y %H:%M:%S")
df['dt'] = (df['DateTime']-df['DateTime'].shift(1)).astype('timedelta64[s]')

如果几分钟就可能引起麻烦?

谢谢!

2 个答案:

答案 0 :(得分:2)

对我来说,在熊猫0.25.0中可以完美地解决您的问题,但是可以通过Series.diff简化它,通过Series.dt.total_seconds来获取秒数,并用60除以分钟:

print (df)
          DateTime
0  01.02.2019 0:00
1  01.02.2019 0:10
2  01.02.2019 0:30
3  01.02.2019 0:55

df['DateTime']=pd.to_datetime(df['DateTime'],infer_datetime_format=True,
                              errors='coerce', format="%d.%m.%Y %H:%M")

df['dtm'] = (df['DateTime']-df['DateTime'].shift(1)).astype('timedelta64[m]')
df['dts'] = (df['DateTime']-df['DateTime'].shift(1)).astype('timedelta64[s]')

df['dtm1'] = df['DateTime'].diff().dt.total_seconds() / 60
print (df)
             DateTime   dtm     dts  dtm1
0 2019-02-01 00:00:00   NaN     NaN   NaN
1 2019-02-01 00:10:00  10.0   600.0  10.0
2 2019-02-01 00:30:00  20.0  1200.0  20.0
3 2019-02-01 00:55:00  25.0  1500.0  25.0

答案 1 :(得分:2)

可能的原因:

可能是,您的DateTime列具有相同的日期,小时和分钟信息,导致差异为0。

在数据帧之间进行检查,看看问题是否仍然存在。

相关问题