我正在将多个时间序列表读入pandas dataFrame,并将它们与常见的pandas datetime索引连接在一起 . 记录时间序列的数据 Logger 不是100%准确,这使得重新采样非常烦人,因为根据时间是略高于还是低于采样间隔,它将创建NaN并开始使我的系列看起来像一条虚线 . 这是我的代码
def loaddata(filepaths):
t1 = time.clock()
for i in range(len(filepaths)):
xl = pd.ExcelFile(filepaths[i])
df = xl.parse(xl.sheet_names[0], header=0, index_col=2, skiprows=[0,2,3,4], parse_dates=True)
df = df.dropna(axis=1, how='all')
df = df.drop(['Decimal Year Day', 'Decimal Year Day.1', 'RECORD'], axis=1)
if i == 0:
dfs = df
else:
dfs = concat([dfs, df], axis=1)
t2 = time.clock()
print "Files loaded into dataframe in %s seconds" %(t2-t1)
files = ["London Lysimeters corrected 5min.xlsx", "London Water Balance 5min.xlsx"]
data = loaddata(files)
这是一个关于索引的想法:
data.index class'pandas.tseries.index.DatetimeIndex'> [2012-08-27 12:05:00.000002,...,2013-07-12 15:10:00.000004]时长:91910,Freq:None,时区:没有
将指数四舍五入到最近的分钟最快和最普遍的是什么?
3 回答
这是一个小技巧 . 日期时间以纳秒为单位(当被视为
np.int64
时) . 所以在几纳秒内完成几分钟 .Jeff提到的问题4314现已关闭,并且在pandas 0.18.0中为DatetimeIndex,Timestamp,TimedeltaIndex和Timedelta添加了
round()
方法 . 现在我们可以做到以下几点:round()
接受频率参数 . 它的字符串别名列为here .对于数据列;使用:round_hour(df.Start_time)