我的数据如下:
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]')
如果几分钟就可能引起麻烦?
谢谢!
答案 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。
在数据帧之间进行检查,看看问题是否仍然存在。