我无法操纵为项目提供给我的时间序列数据。数据包含每秒在网站上进行的飞行预订次数,持续时间为30分钟。以下是包含时间戳
的列的一部分>>> df['Date_time']
0 7/14/2017 2:14:14 PM
1 7/14/2017 2:14:37 PM
2 7/14/2017 2:14:38 PM
我想做
>>> pd.set_index('Date_time')
并使用pandas提供的datetime和timedelta方法生成时间戳,以用作访问和修改任何单元格中任何值的索引。 像
这样的东西>>> td=datetime(year=2017,month=7,day=14,hour=2,minute=14,second=36)
>>> td1=dt.timedelta(minutes=1,seconds=58)
>>> ti1=td1+td
>>> df.at[ti1,'column_name']=65000
但生成的时间戳格式为
>>> print(ti1)
2017-07-14 02:16:34
在我的情况下不能直接用作索引,可以清楚地看到。 如果没有自己编写其他方法,是否有上述案例的解决方法?
我想做上述操作,因为它为我提供了更高级别的数据控制,而不是为我想要更新的每一行寻找默认的数字索引,因此对我来说会更有效
答案 0 :(得分:1)
你能检查一下' Date_time'列并确认它是字符串(对象)?
df.dtypes
如果是这样,您应该能够使用以下内容将值转换为pd.Timestamp。
df['timestamp'] = df['Date_time'].apply(pd.Timestamp)
当我们现在调用.dtypes时,我们应该有一个'时间戳' datetime64 [ns]类型的字段,它允许我们更容易地使用内置的pandas方法。
我建议通过设置索引等于该列来实现对时间戳索引数据帧是谨慎的。
df.set_index('timestamp', inplace=True)
我们现在应该可以使用一些更有用的方法,例如
df.loc[timestamp_to_check, :]
df.loc[start_time_stamp : end_timestamp, : ]
df.asof(timestamp_to_check)
根据将datetime.datetime / pd.Timestamp / np.datetime64传递给上面的内容,从DataFrame中查找值。请注意,您需要投射任何字符串(对象)'查找'为了正确使用上述类型,可以使用上述类型之一。
我更喜欢使用pd.Timestamp() - https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Timestamp.html来处理字符串的日期时间转换,除非我明确确定日期时间字符串总是处于什么格式。