【发布时间】:2020-10-20 12:50:01
【问题描述】:
我有一个文本文件“example.txt”,其中包含以 11 Hz 采样的数据(因此每 11 秒一次)。
在这里您可以找到我的代码来加载文本文件并将“日期”和“时间”转换为日期时间格式。最后数据框的大小为(34,6):
import glob
import os
import datetime
#Specify file path
file = 'C:\Users\...\example.txt'
#Load file
df = pd.read_csv(file, sep=";", header=None, names=["Date", "Time", "ID1","ID2","ID3","MP","ET"],float_precision='round_trip')
#In my specific case, the txt.file has headers, which I want to remove
date = df['Date']
if date[0] == 'Date':
df = df.iloc[1:]
df = df.reset_index(drop=True)
# I erase the letters 'ms' so I only get numbers
df['Time'] = df['Time'].str[:-2]
# Put in datetime format
date = df['Date']
time = df['Time']
date_and_time = date + time
date_time_format = '%Y/%m/%d %H:%M:%S %f'
df['Time'] = pd.to_datetime(date_and_time,format=date_time_format)
# Drop Date column
df = df.drop(['Date'],axis=1)
在第 22 行和第 23 行(见下面的输出),有 35 秒的间隔。由于我想绘制这些数据,我想通过使用相同的 11 Hz 采样频率来填补这个空白。所以我想在第 22 行和第 23 行之间填充 35*11 个数据点。对于这个“填充数据”,我想将正确的时间戳和属性零归因于所有其他变量(ID1、ID2、ID3、MP 和 ET)。我已阅读有关重采样(pandas 模块)的文档,但没有在第 10 秒或第 11 秒重采样的选项。还有另一种方法可以做到这一点吗?也许有一个选项可以绘制时间戳数据中的间隙?
谢谢
df
Out[25]:
Time ID1 ID2 ID3 MP ET
0 2020-08-06 18:00:38.000000 0 0 0 230400 0.229000091553
1 2020-08-06 18:00:38.999160 0 1 1 529 0.254999876022
2 2020-08-06 18:00:38.199833 0 2 2 619 0.270999908447
3 2020-08-06 18:00:38.299750 0 3 3 84 0.292000055313
4 2020-08-06 18:00:38.399666 0 4 4 629 0.31500005722
5 2020-08-06 18:00:38.499583 0 5 5 376 0.331000089645
6 2020-08-06 18:00:38.599500 0 6 6 660 0.34299993515
7 2020-08-06 18:00:38.699417 0 7 7 160 0.354000091553
8 2020-08-06 18:00:38.799333 0 8 8 246 0.361999988556
9 2020-08-06 18:00:38.899250 0 9 9 69 0.371000051498
10 2020-08-06 18:00:38.999167 0 10 10 462 0.382999897003
11 2020-08-06 18:00:39.000000 0 0 0 3 0.229000091553
12 2020-08-06 18:00:39.999160 0 1 1 59 0.254999876022
13 2020-08-06 18:00:39.199833 0 2 2 19 0.270999908447
14 2020-08-06 18:00:39.299750 0 3 3 8 0.292000055313
15 2020-08-06 18:00:39.399666 0 4 4 9 0.31500005722
16 2020-08-06 18:00:39.499583 0 5 5 36 0.331000089645
17 2020-08-06 18:00:39.599500 0 6 6 6 0.34299993515
18 2020-08-06 18:00:39.699417 0 7 7 10 0.354000091553
19 2020-08-06 18:00:39.799333 0 8 8 46 0.361999988556
20 2020-08-06 18:00:39.899250 0 9 9 9 0.371000051498
21 2020-08-06 18:00:39.999167 0 10 10 2 0.382999897003
22 2020-08-06 18:01:14.000000 0 11 11 704 0.395999908447
23 2020-08-06 18:01:14.999160 0 12 12 795 0.410000085831
24 2020-08-06 18:01:14.199833 0 13 13 532 0.421000003815
25 2020-08-06 18:01:14.299750 0 14 14 363 0.430000066757
26 2020-08-06 18:01:14.399666 0 4 4 629 0.31500005722
27 2020-08-06 18:01:14.499583 0 5 5 376 0.331000089645
28 2020-08-06 18:01:14.599500 0 6 6 660 0.34299993515
29 2020-08-06 18:01:14.699417 0 7 7 160 0.354000091553
30 2020-08-06 18:01:14.799333 0 8 8 246 0.361999988556
31 2020-08-06 18:01:14.899250 0 9 9 69 0.371000051498
32 2020-08-06 18:01:14.999167 0 10 10 462 0.382999897003
33 2020-08-06 18:01:15.000000 0 11 11 4 0.395999908447
【问题讨论】:
-
您究竟想在这些新时间戳的值中添加什么?在我看来,用任何好的表示来填充这些数据是很困难的。
标签: python pandas dataframe timestamp